1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-13 23:48:55 +01:00
Commit Graph

522 Commits

Author SHA1 Message Date
Sylvain
f67c286497 (bug) prevent same slot booking feature ignores canceled reservations 2022-07-26 13:35:14 +02:00
Sylvain
6937a426c3 (bug) unable to show daily slots on public calendar 2022-07-26 12:12:59 +02:00
Sylvain
7134b8ffac (bug) fix notification with slots 2022-07-20 16:20:09 +02:00
Sylvain
29b9399ca3 (bug) unable to reserve event 2022-07-20 15:54:04 +02:00
Sylvain
165b3e17b9 (bug) unable to move or cancel reservations 2022-07-20 14:59:42 +02:00
Sylvain
0d072291c7 (bug) 2 people can book the same machine slot
Also: fix reservation change behavior
2022-07-20 11:22:00 +02:00
Sylvain
06ee1acea5 (bug) fix slot reservation is considered full 2022-07-19 15:40:28 +02:00
Sylvain
d26e2ae313 (bug) fix various issues due to slots behavior refactoring 2022-07-19 11:32:12 +02:00
Nicolas Florentin
b3795e21ec bug fix canceled_at was called on slot in members/show.json.jbuilder 2022-07-19 08:21:18 +02:00
Sylvain
6a8c441e85 public calendar endpoint refactoring & testing 2022-07-18 17:19:33 +02:00
Sylvain
37b24a8d2f refactor slots model 2022-07-18 17:18:01 +02:00
Sylvain
5012912edd (wip) refactoring Availabilities::AvailabilitiesService and Availabilities::StatusService 2022-07-18 17:18:01 +02:00
Sylvain
b2fd2e1b48 build all slots at reservation creation time 2022-07-18 17:18:00 +02:00
Guilherme Chaguri
d63b8d0dfa Add username column to the member list 2022-07-14 16:11:44 -03:00
Sylvain
a41a22a050 (bug) wrong number of credits + improved text 2022-06-29 15:35:17 +02:00
Sylvain
1b8282fda4 display reservations credits in the dashboard 2022-06-29 15:35:17 +02:00
Sylvain
bcbd3bfb58 (bug) invalid users are reported in search 2022-06-29 15:35:17 +02:00
Sylvain
6ce762f778 (bug) unable to reserve a space 2022-06-29 15:34:47 +02:00
Sylvain
9b601bc438 (feat) show reservations panel 2022-06-29 15:34:04 +02:00
Sylvain
ea1883e406 factorize front-end API params helper 2022-06-29 15:34:04 +02:00
Sylvain
48e1cf782f (bug) unable to edit an event 2022-06-15 09:42:39 +02:00
vincent
103bf80e81 Standardize card layout 2022-06-14 16:44:26 +02:00
Sylvain
1b5bb662ac (bug) unable to edit OIDC provider 2022-06-06 11:40:53 +02:00
Du Peng
798941c349 edit organization custom field in member's dashboard profile 2022-05-11 16:57:44 +02:00
Du Peng
3e34b3c7a7 add user validation required setting, user proof of identity upload and organization custom field 2022-05-11 16:57:44 +02:00
Sylvain
302c55755e (ui) admin edit user: use new user-profile-form component 2022-05-10 10:23:43 +02:00
Sylvain
040858ac1f (ui) refactored profile-completion screen to use more accurate messages 2022-05-09 14:58:26 +02:00
Sylvain
aae1a5c20e (api) rename user related models to use the _attributes naming convention 2022-05-04 14:12:48 +02:00
Sylvain
6ec6a8c4c9 (api) save which data is really mapped from the sso 2022-05-04 14:05:36 +02:00
vincent
4c6942eba4 merge 2022-05-04 13:02:40 +02:00
Sylvain
07578b5826 (ui)(api) configure data mapping for openid 2022-05-04 12:28:48 +02:00
Sylvain
c85281b29f (api) automatically configure the openID response_type 2022-05-04 12:28:48 +02:00
Sylvain
6c46e5ec81 (api) automatically configure some openID parameters: redirect_uri, display, response_mode 2022-05-04 12:28:48 +02:00
Sylvain
2c2f8fdcc5 (api) openid provider configuration api 2022-05-04 12:16:38 +02:00
Sylvain
056a982d68 (bug) return auth provider mappings from the API 2022-05-04 12:16:38 +02:00
Sylvain
b4e53d2039 (db) table to save OpenID connect configuration
Also refactored OAuth2Mapping to allow usage with any types of providers
2022-05-04 12:16:38 +02:00
vincent
3f4714861b Add description to plan category 2022-05-04 11:16:51 +02:00
Du Peng
08b072e33c Fix a bug: unable to show machine availability slot for admin 2022-04-05 14:21:19 +02:00
Sylvain
0c51aff748 (feat) OAuth2 scopes are now configurable from the interface
Previously, scopes were supported through OAUTH2_SCOPE since v5.3.1.
BREAKING CHANGE: update your oauth2 provider configuration if you need scopes support
2022-03-22 16:40:09 +01:00
Sylvain
c031f099a5 Merge branch 'oauth2' into dev 2022-01-17 12:46:07 +01:00
Sylvain
634da414f8 (feat) When a payment schedule is in error or canceled, ability to re-enable it with another payment method 2022-01-17 12:38:53 +01:00
Sylvain
051b56b72f send notifications on payment schedules error/canceled by gateway 2022-01-11 12:37:06 +01:00
Sylvain
af62a8446e fix wrong file names 2022-01-11 11:32:02 +01:00
Sylvain
9922812111 Ability to select "bank transfer" as the payment mean for a payment schedule 2022-01-05 15:58:33 +01:00
Sylvain
f3f15a2b9d Ability to cancel a payement schedule from the interface 2022-01-03 17:13:35 +01:00
Sylvain
effe5c7ba9 optimized the load time of the payment schedules list
From now, we no longer retrieve the client_secret directly from the API/list but from a specialized component which ask API/get_item.
This highly decrease the laod time needed to fetch API/list
2022-01-03 11:24:08 +01:00
Sylvain
6091cec82e api endpoint to create prices 2021-12-21 14:18:03 +01:00
Sylvain
6dc2e8e41e modelise space object from API in TS 2021-12-21 09:51:40 +01:00
Sylvain
5ebc1017d2 save prices duration in db 2021-12-20 15:47:57 +01:00
Sylvain
3fb9850786 [bug] unable to bind sso to Profile.bithday or Profile.gender 2021-12-20 14:07:25 +01:00
Sylvain
4c56dffc04 remove deprecated code and endpoints 2021-10-18 10:15:48 +02:00
Sylvain
fd39eaf2f1 fix renew subscription API
TODO:
- remove old endpoints
- bug in UI (start date invalid)
- fix tests
- payzen
2021-10-15 17:31:01 +02:00
Sylvain
70f0e21543 move free extend modal to react 2021-10-11 18:50:53 +02:00
Sylvain
e646eb8cb5 extend subscription UI 2021-10-08 19:14:47 +02:00
Du Peng
1c54e54c17 use plant.base_name instands of plan.name 2021-09-21 18:00:48 +02:00
Sylvain
10aaf0042c integration of packs-summary 2021-06-29 15:59:57 +02:00
Sylvain
baf41588d3 packs summary component 2021-06-29 11:14:36 +02:00
Sylvain
bbb1aca4fb display validity for each pack 2021-06-28 12:24:31 +02:00
Sylvain
f16cbc44ff WIP: buy pack modal 2021-06-25 17:24:34 +02:00
Sylvain
0345d22582 delete & disable packs 2021-06-24 17:59:05 +02:00
Sylvain
d54f30e048 WIP: interface to configure packs 2021-06-21 17:39:48 +02:00
Sylvain
99792e8610 WIP: migrate machine card to react 2021-06-15 17:34:12 +02:00
Sylvain
e184bf3d3c filter plans y duration 2021-06-10 14:06:53 +02:00
Sylvain
a416f8c7ae transactional bulk update + better error handling while configuring the payment gateway 2021-06-10 10:39:42 +02:00
Sylvain
05882b3743 display list of plans grouped by category 2021-06-09 13:03:58 +02:00
Sylvain
4ca16c2688 associate plan w/ category 2021-06-08 17:26:40 +02:00
Sylvain
e1e446ab3f API+ interface to CRUD plan categories 2021-06-08 16:43:43 +02:00
Sylvain
68f64cfc5c update the card for payment schedules 2021-06-04 18:26:20 +02:00
Sylvain
81bc22c494 front-end adaptation for interacting with new object[] API
Also: [bug] handle not onnected users on subscription page
- fix showing an error message when no gateway is selected
2021-06-01 11:01:38 +02:00
Sylvain
d942d46632 WIP: migration to object[]
TODO: fix running tests, fix front-end
2021-05-28 17:34:20 +02:00
Sylvain
5f5ec8dbb6 remove references to Invoice.invoiced 2021-05-27 15:58:55 +02:00
Sylvain
13f50c0e33 remove references to WalletService.transactable 2021-05-27 13:43:54 +02:00
Sylvain
6bcd9f6fef Merge branch 'dev' into payzen 2021-05-17 15:07:41 +02:00
Sylvain
7ac119d4cf [bug] invoices are not generated in test/development if the configured locale is composed
Eg. If locale is fr-CA, it was crashing. If locale was only fr, is was working.
Now, composed locales print the watermark using the base locale and
hour_minute format is fetched from the base locale
2021-05-12 17:23:42 +02:00
Sylvain
2a7a7fd614 [bug] the event themes are not kept when editing the event again 2021-05-12 14:54:56 +02:00
Sylvain
5f47624d4e WIP: create payment schedule w/ payzen 2021-04-29 17:10:02 +02:00
Sylvain
aaf36dcc0a reserve events w/ payzen
we cannot use the <cart> directive because the layout is too much different
2021-04-29 16:29:35 +02:00
Sylvain
26dfbef5e1 WIP: refactor models to use payment_gateway_objects 2021-04-21 17:38:06 +02:00
Sylvain
434ec9c205 refactored Invoices to get rid of stripe references 2021-04-20 17:22:53 +02:00
Sylvain
ddd1ac52d6 save reservation|subscription to db after payment 2021-04-14 17:56:10 +02:00
Sylvain
ef7dcd37d8 retreive the formToken from PZ API 2021-04-12 12:16:12 +02:00
Sylvain
23032c405b WIP: create the formToken server-side 2021-04-09 17:17:58 +02:00
Sylvain
667f6f6229 show recapitulative of payzen settings 2021-04-06 17:47:47 +02:00
Sylvain
422acdd162 safely configure and test payzen keys 2021-04-02 17:16:27 +02:00
Sylvain
30830b56fd PayZen REST API wrapper ruby + live test keys while configuring 2021-04-01 18:20:26 +02:00
Sylvain
c25e54a6af save & retreive stripe settings 2021-03-30 15:56:36 +02:00
Sylvain
e38228ae7e prevent notification crash on nil reservation 2021-03-29 10:19:37 +02:00
Sylvain
7099f1f317 address required
- Ability to set the address as a mandatory field
- The address is new requested when creating an account
- The profile completion page is less fuzzy for people landing on it without enabled SSO
2021-03-23 11:49:05 +01:00
Sylvain
16bb4bc76d WIP: payment schedules dashboard 2021-02-09 17:18:33 +01:00
Sylvain
b0ef9e097d WIP: stripe update card 2021-02-09 12:09:26 +01:00
Sylvain
b5cdea513d confirm check cashing api 2021-02-04 17:51:16 +01:00
Sylvain
d22d011a10 show more results for the payment schedules interface 2021-02-04 15:47:11 +01:00
Sylvain
163976b988 WIP: error handling for card payments on later deadlines 2021-01-27 17:24:10 +01:00
Sylvain
8d08100166 WIP: schedules management inerface 2021-01-27 13:59:41 +01:00
Sylvain
def0778a4d basic inteface to retrieve payment schedules 2021-01-25 17:42:30 +01:00
Sylvain
26636254bd generate the invoices for each schedule item and notify if something goes wrong 2021-01-25 13:05:27 +01:00
Sylvain
e5439901d6 fix generate payment schedule pdf + send by mail
TODO: total amount does not match with sum of all lines
- generate invoices for each PS-item
- interface to access the payment schedules
2021-01-19 16:47:51 +01:00
Sylvain
728ae4310c improved testing of payment schedules + some fixes
TODO: fix the test
rails test test/integration/reservations/create_test.rb
Reservations::CreateTest#test_user_reserves_a_machine_and_renew_a_subscription_with_payment_schedule_and_coupon_and_wallet [test/integration/reservations/create_test.rb:841]
Minitest::Assertion: Expected: "stripe"
  Actual: nil
2020-12-30 18:43:33 +01:00
Sylvain
dc00df4afc fix stripe subscription w/ coupon + wallet 2020-12-30 12:19:33 +01:00
Sylvain
f661428db2 better error handling in stripe::subscription creation process 2020-12-23 15:29:56 +01:00
Sylvain
b5504d2342 create stripe subscription with all data 2020-11-12 16:44:55 +01:00
Sylvain
21bd1312bc compute payment schedule + basic display 2020-11-03 16:50:11 +01:00
Sylvain
7084e88d2d display monthly price for compatible plans 2020-11-02 12:29:08 +01:00
Sylvain
465fe8e913 show link to pdf in component 2020-11-02 11:16:13 +01:00
Sylvain
4f877ab05d react coponent: plan-card + extracted scss from stylesheet.rb into themes/ 2020-10-29 15:53:29 +01:00
Sylvain
5f93e6d3be plan creation: set if it allows monthly payments 2020-10-27 13:06:37 +01:00
Sylvain
6fa9347c75 fix training reservation calendar 2020-10-05 12:54:37 +02:00
Sylvain
d701260fae fix spaces reservation calendar 2020-10-05 12:12:22 +02:00
Sylvain
5a0185dd48 fix machine reservation calendar 2020-09-30 16:32:01 +02:00
Sylvain
1a6cd356bf WIP: using postgres for full-text search in projects 2020-06-22 16:28:05 +02:00
Sylvain
5e8aeb928c fix refactoring issue in /api/open_api_clients 2020-06-15 17:07:28 +02:00
Sylvain
dbda82ac9b notify after members sync on stripe 2020-06-09 15:06:46 +02:00
Sylvain
f78eb10c75 use openlab_app_secret from db w/ openlab_ruby gem 2020-06-08 15:17:56 +02:00
Sylvain
88f2fb3749 secure the settings API (read) + read the openlab settings from the db 2020-06-08 15:08:07 +02:00
Sylvain
2082f1e11c fix avatar refresh on update 2020-06-03 10:21:13 +02:00
Sylvain
075b642cc8 remove useless & broken item_url(...) methods 2020-06-02 11:37:24 +02:00
Sylvain
fdc2f60ff5 [bug] when a new account is created through the sign-up modal, the role is not reported in the StatisticProfile (#196)
Also: if a member was deleted the /api/members/mapping will raise an error
2020-05-18 16:23:53 +02:00
Sylvain
2d8df2c1cd Ability to promote a user to a higher role (member > manager > admin) 2020-05-05 11:28:04 +02:00
Sylvain
3319e68526 Auto-adjusts text colors based on the selected theme colors 2020-05-04 13:20:57 +02:00
Sylvain
29e7ac2f08 [bug] background image of the profile is not shown and wrong menu hover color 2020-05-04 12:10:13 +02:00
Sylvain
881cc97e8d The invoices list displays the operator in case of offline payment 2020-05-04 10:56:27 +02:00
Sylvain
69c8d7c678 manager can change existing reservations 2020-04-27 12:58:55 +02:00
Sylvain
5312c13d3f [manager] manage agenda + book machines for himself&others 2020-04-27 12:12:29 +02:00
Sylvain
e1a8646e5f inteface to add/remove/edit managers 2020-04-22 10:09:16 +02:00
Sylvain
f88472eeb3 Interface to manage partners 2020-04-21 16:47:35 +02:00
Sylvain
ff75a96ecc Ability to define, per availability, a custom duration for the reservation slots 2020-04-15 18:08:02 +02:00
Sylvain
2bbce711d9 fix stylesheet view 2020-03-25 12:35:08 +01:00
Sylvain
a44bf85014 Merge branch 'slot_is_only_subscriptions' into dev 2020-03-02 16:27:26 +01:00
Sylvain
07b21f5094 Merge branch 'book_slot_at_same_time' into dev 2020-03-02 15:52:05 +01:00
Sylvain
1a7d7258d8 [bug] in some cases, bogus admin notification on profile completed 2020-03-02 10:20:10 +01:00
Sylvain
5b46edd748 welcome tour + save completed tours in database 2020-02-18 17:36:45 +01:00
Du Peng
b559d10b87 improve slot is only subscription 2020-02-12 12:58:17 +01:00
Du Peng
760109de05 fix bug: cant reserve formation slot 2020-02-11 13:21:25 +01:00
Du Peng
74cc69d1bd Ability to configure reservation slot restrict for plans 2020-02-07 17:37:00 +01:00
Du Peng
7c86adde4b Ability to configure allowing or preventing member book a machine/formation/event slot if he already have a reservation the same day at the same time 2020-02-05 16:53:47 +01:00
Sylvain
6aa3c0caeb Notify all admins on the creation of a refund invoice 2019-12-09 11:55:31 +01:00
Sylvain
5215d0643d Merge branch 'ics' of git.sleede.com:projets/fab-manager into ics 2019-12-03 09:56:37 +01:00
Sylvain
cca6b14f58 import events asyncronously from icalendar 2019-12-02 15:53:24 +01:00
Sylvain
f72ae98109 do not show title if calendar is configured to hide them 2019-11-27 17:50:38 +01:00
Sylvain
85d17d62f3 fix events endpoint 2019-11-27 17:44:01 +01:00
Sylvain
97d93cd622 added a name to imported calendar 2019-11-27 17:39:19 +01:00
Sylvain
baf8cfb487 iCalendar server api & db model 2019-11-27 17:05:19 +01:00
Sylvain
a9b1eabb2c [poc] show google agenda events in the public calendar 2019-11-27 13:51:23 +01:00
Sylvain
eb3c78a61d [poc] show google agenda events in the public calendar 2019-11-26 13:44:43 +01:00
Sylvain
68b17cbe9a Ability to show the scheduled events in the admin calendar 2019-11-25 14:49:39 +01:00
Sylvain
1182822d8b show correct seats nb in canceled reservation 2019-11-25 10:45:54 +01:00
Sylvain
ce366beaa2 display that an event reservation was canceled
also: fixed transtions files
2019-11-21 11:15:05 +01:00
Sylvain
9ec736e6b5 delete recursive slots 2019-11-18 17:29:51 +01:00
Sylvain
927479733b migrated links to /users/auth from GET to POST
see https://github.com/omniauth/omniauth/wiki/Resolving-CVE-2015-9284 for more info
2019-10-02 14:37:47 +02:00
Sylvain
ff5de97c92 import new users from CSV and view results in app
TODO:
 - update users though CSV
2019-09-26 17:05:57 +02:00
Sylvain
4deaf1f75a [ongoing] import members from csv 2019-09-25 16:37:42 +02:00
Sylvain
e7bb41f38d [ongoing] import users from csv file: admin inteface 2019-09-24 12:21:19 +02:00
Sylvain
1fa36d4029 renamed avoir_mode to payment_method 2019-09-17 14:48:06 +02:00
Sylvain
aef4cc49f2 fixes accounting codes setting + improved error handling 2019-09-17 13:00:25 +02:00
Sylvain
02d28e0b8c improved accounting codes settings page (1 click saves all) + improved export file name 2019-09-16 14:39:47 +02:00
Sylvain
224b0d6dee Merge branch 'sca' into dev 2019-09-12 12:53:56 +02:00
Sylvain
4d0ac9b3ca using stp_payment_intent_id instead of stp_invoice_id on new invoices 2019-09-10 16:45:45 +02:00
Sylvain
bebb3354fb [bug] (#140) VAT rate is erronous in invoices 2019-08-14 10:56:30 +02:00
Sylvain
92d79bc9c7 [bug] (#140) VAT rate is erronous in invoices 2019-08-14 10:54:23 +02:00
Sylvain
a7f68b59dd connect the export modal to the api 2019-07-31 12:00:52 +02:00
Sylvain
3d3be70e29 [bug] newly generated refund is displayed as broken 2019-07-29 12:25:46 +02:00
Sylvain
a778b1063a enhance ruby syntax 2019-07-29 12:17:57 +02:00
Sylvain
0714878bca [bug] unable to generate a refund 2019-07-29 12:07:22 +02:00
Sylvain
ddbb492ace [bug] abuses reports are not notified to admins 2019-06-26 12:55:38 +02:00
Sylvain
d0cd5a90d2 handle deleted users in notifications 2019-06-12 15:49:35 +02:00
Sylvain
ddce997e12 display data collection purpose on each input field + fix notifications on deleted user 2019-06-12 15:34:03 +02:00
Sylvain
a53c6e80e7 move invoice->operator to invoicing_profile + minor fixes to handle user deletion 2019-06-12 12:22:38 +02:00
Sylvain
cfd33c3a52 migrate projects to statistic_profile 2019-06-06 16:34:53 +02:00
Sylvain
fe2a6f7120 migrate trainings to statistic_profile and adjust code 2019-06-06 12:00:21 +02:00
Sylvain
660a8abe8b fix statistic_profile 2019-06-05 12:24:01 +02:00
Sylvain
17fbd6b465 multiple fixes related to statistic_profile & invoicing_profile + fix users list while sorting by subscription 2019-06-05 12:11:51 +02:00
Sylvain
4c033614ae [ongoing] migrate subscriptions & reservations to statistic_profile 2019-06-04 16:50:23 +02:00
Sylvain
52992ac9d5 move gender & birthday to statistic_profile 2019-06-04 13:33:00 +02:00
Sylvain
9ef2f142bd link HistoryValue to InvoicingProfile + improved invoices tests 2019-06-03 16:51:43 +02:00
Sylvain
7ed97ef35a link wallet & its transactions to invoicingprofile 2019-06-03 16:00:09 +02:00
Sylvain
6011f27268 finish moving organization & address to invoiving profile: fix create & edit user 2019-06-03 12:06:01 +02:00
Sylvain
a211ad39ff moving organization & address to invoicingProfile + refactored doc about postgre 2019-05-29 14:28:14 +02:00
Sylvain
142e07f3c9 update code to use invoicingprofile 2019-05-29 12:01:24 +02:00
Sylvain
ffbca98276 [ongoing] fix api to use the invoicing_profile 2019-05-28 16:49:36 +02:00
Sylvain
7bbea22e76 display reports in interface 2019-05-21 11:49:50 +02:00
Sylvain
dd4b6e2cb1 [ongoing] abuses management interface 2019-05-09 18:27:19 +02:00
Sylvain
26b901ebb5 [bug#131] Availabilities export report an erroneous number of reservations for machine availabilities 2019-05-07 12:24:51 +02:00
Sylvain
162a56250a notify users after privacy policy update + hide undefined content 2019-04-25 11:40:26 +02:00
Sylvain
c0c9b2a980 privacy policy: fixed admin view after update + display last update date 2019-04-23 12:58:01 +02:00
Sylvain
7a2fc7c42e [ongoing] save as draft or publish 2019-04-18 15:57:56 +02:00
Sylvain
43ff06c35d fixed and improved translations 2019-04-18 11:35:09 +02:00
Sylvain
9f8d24ec4f paginate list of coupons 2019-04-04 17:28:29 +02:00
Sylvain
c223bd99ea add loader while archive is not ready 2019-04-04 12:55:21 +02:00
Sylvain
c786ba6edb notify user about archiving 2019-04-04 11:37:23 +02:00
Sylvain
93ff761e64 [bug] Error :syntax when using quote in event category name 2019-04-02 16:19:23 +02:00
Sylvain
7a317b7e45 [bug] unable to add a file attachment to an event 2019-03-28 11:30:25 +01:00
Sylvain
2ac0336adb Merge branch 'dev' into host 2019-03-25 16:17:23 +01:00
Sylvain
5cdaa014ef [security] updated devise + updated rails 2019-03-25 14:57:48 +01:00
Sylvain
8530a6f655 superadmin + fixed free space notification 2019-03-20 16:49:38 +01:00
Sylvain
03c0c0d4fb close periods at 1 year minus 1 day + fix alert reminder transalation 2019-03-18 14:45:21 +01:00
Sylvain
7b0824a4a3 notify admins when no accounting period closed for 1 year 2019-03-18 14:33:30 +01:00
Sylvain
b940ae0327 display complete info set on accounting archives 2019-03-11 16:11:49 +01:00
Sylvain
9854a4b965 prevent memory saturation with periodic checks 2019-02-26 15:18:19 +01:00
Sylvain
cf23fae73c Merge branch 'dev' into host 2019-02-14 16:35:38 +01:00
Sylvain
7b573dd37f restored deprecated notification 2019-02-14 13:05:09 +01:00