Compare commits

...
Sign in to create a new pull request.

615 commits

Author SHA1 Message Date
Vincent BRIDIER
fda27cfe33
Mig 2024-09-23 19:19:50 +02:00
Vincent BRIDIER
02c9e6bc8e
Merge branch 'trunk' into develop 2024-09-23 16:59:17 +02:00
Vincent BRIDIER
f272a3a7c8
Merge branch 'develop' into trunk 2024-09-23 16:58:20 +02:00
Vincent BRIDIER
fc236be953
fix: Update customers count in viewServiceProvider 2024-09-23 16:58:09 +02:00
Vincent BRIDIER
c4d98f6ef2
Merge branch 'le-gaulois-2024' into develop 2024-09-20 15:59:17 +02:00
Vincent BRIDIER
ba1e10d105
fix: Update Static Pages model to handle seo_title nullable 2024-09-20 15:58:44 +02:00
Vincent BRIDIER
afe0299fcf Merge branch 'issue-64' into 'le-gaulois-2024'
fix: 💄 correct some display issue in home page / recipe section

See merge request ldc-web/projets/le-gaulois!125
2024-09-20 13:47:17 +00:00
Karl Muller
c6c69b6fc0 fix: 💄 correct some display issue in home page / recipe section 2024-09-20 15:44:26 +02:00
Vincent BRIDIER
a2440635d6
Merge branch 'develop' into trunk 2024-09-20 14:43:24 +02:00
Vincent BRIDIER
da51ebad6a
Merge branch 'le-gaulois-2024' into develop 2024-09-20 14:43:15 +02:00
Vincent BRIDIER
9a943e1f55
fix: Update footer links 2024-09-20 14:42:49 +02:00
Noah Lancien
bf35ab6893 fix: Updated '40 ans' page style #136 2024-09-20 14:41:43 +02:00
Vincent BRIDIER
c2b964bd8a Merge branch 'issue-141' into 'le-gaulois-2024'
fix: 💄 adjust the job slider in recruitment page

See merge request ldc-web/projets/le-gaulois!124
2024-09-20 12:40:28 +00:00
Karl Muller
16d82deb89 fix: 💄 adjust the job slider in recruitment page 2024-09-20 14:37:00 +02:00
Vincent BRIDIER
26ad359e8a
Merge branch 'develop' into trunk 2024-09-20 14:15:50 +02:00
Vincent BRIDIER
a0999650b9
Merge branch 'le-gaulois-2024' into develop 2024-09-20 12:50:05 +02:00
Vincent BRIDIER
e59b77b627 Merge branch 'issue-80' into 'le-gaulois-2024'
fix: 🐛 sync mobile and desktop text in recipes search

See merge request ldc-web/projets/le-gaulois!123
2024-09-20 10:49:34 +00:00
Vincent BRIDIER
33ec4a6783
fix: Update some FIXME 2024-09-20 12:47:55 +02:00
Noah Lancien
5312fab301 fix: Updated news corporate slider style #135 2024-09-20 12:38:33 +02:00
Karl Muller
01e740d525 fix: 🐛 sync mobile and desktop text in recipes search 2024-09-20 12:37:01 +02:00
Vincent BRIDIER
29e5b53309 Merge branch 'issue-103' into 'le-gaulois-2024'
fix: 💄 correct display issues commitment 5

See merge request ldc-web/projets/le-gaulois!122
2024-09-20 10:19:13 +00:00
Karl Muller
a60cad77b0 fix: 💄 correct display issues commitment 5 2024-09-20 12:17:04 +02:00
Vincent BRIDIER
5acec234c9
Merge branch 'develop' into trunk 2024-09-20 12:05:10 +02:00
Vincent BRIDIER
1060e6328d
feat: 🗃️ Switch email and hashcode on customers table for migration 2024-09-20 12:05:01 +02:00
Noah Lancien
de0405cd60 fix: Updated breeding pages style - #149 2024-09-20 12:01:13 +02:00
Vincent BRIDIER
bffade18ba
Merge branch 'le-gaulois-2024' into develop 2024-09-20 11:54:21 +02:00
Vincent BRIDIER
194be2ed53 Merge branch 'issue-120' into 'le-gaulois-2024'
fix: 💄 correct display issue commitment 3

See merge request ldc-web/projets/le-gaulois!121
2024-09-20 09:53:51 +00:00
Vincent BRIDIER
e242d4c52c
Merge branch 'le-gaulois-2024' into develop 2024-09-20 11:52:08 +02:00
Karl Muller
a9a802f3fa fix: 💄 correct display issue commitment 3 2024-09-20 11:46:18 +02:00
Vincent BRIDIER
2f3a76ca77 Merge branch 'issue-111' into 'le-gaulois-2024'
fix: 💄 correct the content display of commitment 1

See merge request ldc-web/projets/le-gaulois!120
2024-09-20 09:11:12 +00:00
Karl Muller
89d6e89c86 fix: correct the content display of commitment 1 2024-09-20 11:07:27 +02:00
Noah Lancien
a4ce107845 fix: Updated job offers swiper style - #125 2024-09-20 10:38:12 +02:00
Noah Lancien
a09ae4d96b fix: #129 Updated header banner style to never have text overlapping the picture 2024-09-20 09:25:10 +02:00
Vincent BRIDIER
17fcb40204
Merge branch 'develop' into trunk 2024-09-19 16:48:02 +02:00
Vincent BRIDIER
cfec5e811f
feat: Change manifest URL for preprod 2024-09-19 16:47:55 +02:00
Vincent BRIDIER
5c51004e94
Merge branch 'le-gaulois-2024' into develop 2024-09-19 16:46:12 +02:00
Vincent BRIDIER
affb2bded5 Merge branch 'mesbr-command' into 'le-gaulois-2024'
fix: ✨ add fetch mesbr discounts command

See merge request ldc-web/projets/le-gaulois!119
2024-09-19 14:45:46 +00:00
Alexis Gousseau
5de83533a2 fix: ✨ add fetch mesbr discounts command 2024-09-19 16:43:17 +02:00
Vincent BRIDIER
edf2be7e71
Merge branch 'develop' into trunk 2024-09-19 15:56:33 +02:00
Vincent BRIDIER
31c6a90802
Merge branch 'le-gaulois-2024' into develop 2024-09-19 15:49:00 +02:00
Noah Lancien
62bd3110aa fix: Hide switch in news.index #129 2024-09-19 12:49:15 +02:00
Noah Lancien
272cfc712f fix: #134 - Updated static page subtitle field helper + added video in testimonies part 2024-09-19 12:45:57 +02:00
Vincent BRIDIER
1966e8ed02 Merge branch 'issue-79' into 'le-gaulois-2024'
fix: change some field validation and display on recipes.show

See merge request ldc-web/projets/le-gaulois!117
2024-09-19 08:44:37 +00:00
karl.muller
21e50d1f2e fix: change some field validation and display on recipes.show Close #79 2024-09-19 08:44:37 +00:00
nicolas.demangeat
b0e4e5586c Merge branch 'issue-75' into 'le-gaulois-2024'
fix: 🐛 add presetColor to int-color.blade for ranges + display range...

See merge request ldc-web/projets/le-gaulois!118
2024-09-19 08:44:29 +00:00
Nicolas Demangeat
ea9930ef58 fix: 🐛 add presetColor to int-color.blade for ranges + display range banner if the product doesn't have a banner 2024-09-19 10:41:56 +02:00
Vincent BRIDIER
3c6c57f046 Merge branch 'issue-69' into 'le-gaulois-2024'
fix: 🎨 add mesbr total in hotnews & update his style #69

See merge request ldc-web/projets/le-gaulois!116
2024-09-19 08:27:21 +00:00
Alexis Gousseau
1073624f49 fix: 🎨 add mesbr total in hotnews & update his style #69 2024-09-19 10:25:43 +02:00
Vincent BRIDIER
e5033054b7
feat: 🛂 Change BO Auth for SAML 2024-09-19 09:17:51 +02:00
Vincent BRIDIER
4f19cc721d Merge branch 'issue-80' into 'le-gaulois-2024'
fix: correction, recipes and consumption fields and rules

See merge request ldc-web/projets/le-gaulois!115
2024-09-18 14:06:35 +00:00
Karl Muller
193e942af6 fix: correction, recipes and consumption fields and rules 2024-09-18 15:46:19 +02:00
Noah Lancien
d6d4fd8cee fix: Recrutement page - Added missing breadcrumb + update store request 2024-09-18 13:07:24 +02:00
Noah Lancien
73e3cee2a1 fix: Wording and hide elements on 'oui c'est bon' page - #145 2024-09-18 12:52:04 +02:00
Noah Lancien
66728fd5ee fix: Added missing breadcrumb in 'sortant à l'extérieur' page 2024-09-18 12:43:56 +02:00
Noah Lancien
8aa6799645 fix: #146 feedback - comment map component section + wording in 'sortant a l'extérieur' page 2024-09-18 12:38:53 +02:00
Vincent BRIDIER
543d01394b
Merge branch 'develop' into trunk 2024-09-18 12:02:51 +02:00
nicolas.demangeat
50ad375e5b Merge branch 'issue-68' into 'le-gaulois-2024'
fix: 🐛 display meat, submeats, ranges, subranges by order in front + add...

See merge request ldc-web/projets/le-gaulois!114
2024-09-18 07:59:17 +00:00
Nicolas Demangeat
c0b1ebbf38 fix: 🐛 display meat, submeats, ranges, subranges by order in front + add correct routes for front menu 2024-09-18 09:54:18 +02:00
Noah Lancien
0758b7b9ae Merge branch 'le-gaulois-2024' into trunk 2024-09-17 14:05:19 +02:00
noah.lancien
a0188cb85f Merge branch 'issue-136' into 'le-gaulois-2024'
feat: ✨ add links and replace some images on 40 ans page

See merge request ldc-web/projets/le-gaulois!111
2024-09-17 12:04:47 +00:00
nicolas.demangeat
95719f0166 Merge branch 'issue-65' into 'le-gaulois-2024'
fix: 🐛 missing the elementName data in the include...

See merge request ldc-web/projets/le-gaulois!113
2024-09-17 08:50:00 +00:00
Nicolas Demangeat
0aca8548fd fix: 🐛 missing the elementName data in the include fo.partials.button-share in products.blade fo and news show.blade fo 2024-09-17 10:47:16 +02:00
nicolas.demangeat
e855f8bf26 Merge branch 'issue-64' into 'le-gaulois-2024'
fix: 🎨 add value data to the partials input int-color to have a default...

See merge request ldc-web/projets/le-gaulois!112
2024-09-17 08:28:26 +00:00
Nicolas Demangeat
6d1497eedd fix: 🎨 add value data to the partials input int-color to have a default value if needed + add defaults color value to the slides home page 2024-09-17 10:23:56 +02:00
Alexis Gousseau
2e8a884d1f fix: 🚨 resolve some phpcs/phpstan errors 2024-09-13 17:11:15 +02:00
Alexis Gousseau
2671feb4ca fix: 🚸 update bo sidenav ux/ui 2024-09-13 16:56:09 +02:00
Alexis Gousseau
ec1fcbfc1d feat: ✨ add mesbr in da club 2024-09-13 16:56:09 +02:00
Alexis Gousseau
e812983693 fix: 🌐 update enums translations 2024-09-13 16:56:09 +02:00
Alexis Gousseau
eebffd6172 fix: 🐛 update validation rules on register customer for all valid countries 2024-09-13 15:46:08 +02:00
Alexis Gousseau
e5df645adc fix: 🚨 resolve some phpcs/phpstan errors 2024-09-13 15:46:08 +02:00
Alexis Gousseau
c47a5ad1fa feat: ✨ connect news club and surveys answers models to the front 2024-09-13 15:46:08 +02:00
Alexis Gousseau
1edabfb293 style: 🚸 z-index resolution of some buttons that were displayed in front of the backend menus 2024-09-13 15:46:08 +02:00
Alexis Gousseau
0510836020 feat: ✨ add surveys answers CRUD 2024-09-13 15:46:07 +02:00
Alexis Gousseau
7fbff5c589 feat: ✨ add news club CRUD 2024-09-13 15:45:46 +02:00
Alexis Gousseau
de3e5ba176 feat: ✨ add button to like a model for a customer (product/recipe) 2024-09-13 15:44:40 +02:00
Alexis Gousseau
85b5e5d6a9 fix: 🚨 resolve some phpcs errors 2024-09-13 15:43:32 +02:00
Alexis Gousseau
bc7eb0f7cf feat: ✨ complete club depart'aimants functionnality 2024-09-13 15:41:26 +02:00
Alexis Gousseau
426bc8000c feat: ✨ complete club messages functionnality 2024-09-13 15:41:26 +02:00
Alexis Gousseau
78122fddf5 fix: 🐛 update gates & policies to make coexist backend & club together 2024-09-13 15:41:26 +02:00
Alexis Gousseau
5cc4c0ebc2 feat: ✨ add recapitulation shop integration in club 2024-09-13 15:41:26 +02:00
Alexis Gousseau
ae3f15a8a1 feat: ✨ add index shop integration in club 2024-09-13 15:41:26 +02:00
Alexis Gousseau
924d7c0cf6 fix: 🐛 update account questions/answers with CRM v4 2024-09-13 15:41:26 +02:00
Alexis Gousseau
af21694fcd fix: 🐛 update customer data functionnality with CRM v4 2024-09-13 15:41:26 +02:00
Alexis Gousseau
125ca3f548 fix: 🐛 update new password functionnality with CRM v4 2024-09-13 15:41:26 +02:00
Alexis Gousseau
749829f613 fix: 🐛 update forgotten password with CRM v4 2024-09-13 15:41:26 +02:00
Alexis Gousseau
8ca9d70ea8 fix: 🐛 update login customer with CRM v4 2024-09-13 15:41:26 +02:00
Alexis Gousseau
241eb051ac fix: 🐛 update and clean all club integrations 2024-09-13 15:41:26 +02:00
Alexis Gousseau
9d452b5659 chore: ⬆️ bump crm to V4 2024-09-13 15:41:25 +02:00
Alexis Gousseau
b72d9db155 fix: 🐛 update club guest home 2024-09-13 15:40:14 +02:00
Noah Lancien
75f1c8d16a fix: Added missing links to edit breeding pages in BO 2024-09-13 10:01:51 +02:00
Noah Lancien
b6808b6ae8 fix: Updated condition to open link in a new tab in cards-slider partial 2024-09-13 09:47:05 +02:00
Noah Lancien
183cbf1faf fix: Updated the youtube link in the recruitment page - #134 2024-09-12 18:13:04 +02:00
Noah Lancien
d012ed1d2a fix: StaticPageType enum had 2 enums with the same value since the last merge 2024-09-12 18:05:59 +02:00
Noah Lancien
91c5c7f2b0 Merge branch 'le-gaulois-2024' into issue-147 2024-09-12 17:56:42 +02:00
Noah Lancien
dc42691b2c feat: ✨ Added breeding news pages 2024-09-12 17:30:53 +02:00
Noah Lancien
060a4b64b3 Merge branch 'le-gaulois-2024' into trunk 2024-09-12 09:19:43 +02:00
Noah Lancien
8cc71648c9 fix: claims.json-paginate route was missing in script-routes file 2024-09-12 09:19:24 +02:00
Noah Lancien
17f0eaf795 Merge branch 'le-gaulois-2024' into trunk 2024-09-11 16:25:28 +02:00
Noah Lancien
8e7be69b15 fix: Products (sub)ranges/(sub)meats script was blocked by CSP 2024-09-11 16:25:10 +02:00
Karl Muller
31a4341f15 fix: fix alt of 40 ans images 2024-09-11 14:49:53 +02:00
Karl Muller
562b6d34ad feat: ✨ add links and replace some images 2024-09-11 14:44:21 +02:00
Noah Lancien
ba300b0f64 chore: Cleaned vite.config.ts 2024-09-11 11:50:29 +02:00
Noah Lancien
433dd6e41b Merge branch 'le-gaulois-2024' into trunk 2024-09-10 18:26:32 +02:00
Noah Lancien
39f79538f8 fix: updated departments.geojson path 2024-09-10 18:25:13 +02:00
Noah Lancien
aae80648ce fix: some commitments pages crashed due to wrong fake datas 2024-09-10 17:26:34 +02:00
Noah Lancien
14e8ef16ea fix: PSR-4 issue with breeders enums 2024-09-10 14:21:20 +02:00
Noah Lancien
76a48481de Merge branch 'le-gaulois-2024' into trunk 2024-09-10 12:35:35 +02:00
noah.lancien
5048ff5823 Merge branch 'issue-138-breeder-map-component' into 'le-gaulois-2024'
feat: Added breeder map component

See merge request ldc-web/projets/le-gaulois!109
2024-09-10 10:33:48 +00:00
noah.lancien
f32598ceb7 Merge branch 'issue-146' into 'le-gaulois-2024'
style: 💄 change image gallery, picto and text placement

See merge request ldc-web/projets/le-gaulois!108
2024-09-10 10:33:28 +00:00
Noah Lancien
7eb165af49 style: Updated breeder map component tiles 2024-09-10 11:00:23 +02:00
Noah Lancien
e554085c07 fix: set 'false' as a default value for ->discover 2024-09-09 16:53:52 +02:00
noah.lancien
35a184e540 Merge branch 'fix-discover-field-default-value' into 'le-gaulois-2024'
fix: uncomment some breaking 'discover' lines in products CRUD

See merge request ldc-web/projets/le-gaulois!110
2024-09-09 14:24:54 +00:00
Noah Lancien
431f7b09a0 fix: uncomment some breaking 'discover' lines in products CRUD 2024-09-09 16:16:18 +02:00
Noah Lancien
787f947be4 Merge branch 'le-gaulois-2024' into issue-138-breeder-map-component 2024-09-09 12:45:34 +02:00
Noah Lancien
748dbd941d feat: Added breeder map component 2024-09-09 12:20:41 +02:00
Vincent BRIDIER
262156d8cd Merge branch 'issue-110' into 'le-gaulois-2024'
fix: 💬 update content on page engagement #110

See merge request ldc-web/projets/le-gaulois!105
2024-09-06 12:30:39 +00:00
Karl Muller
894fb5beee feat: add links to 40ans CTA 2024-09-06 13:14:01 +02:00
Vincent Crochard
850df265db fix: 💬 delete link content on page engagement #110 2024-09-06 12:24:31 +02:00
Vincent BRIDIER
52e4fc8baf Merge branch 'issue-132' into 'le-gaulois-2024'
fix: 🐛 add getKey() in the booted method for NewsCategory model

See merge request ldc-web/projets/le-gaulois!103
2024-09-06 08:54:57 +00:00
Alexis Gousseau
d7050dabb2 fix: 🌐 update news category/corporate translations 2024-09-06 10:38:10 +02:00
Karl Muller
62277febb8 style: 💄 change image gallery, picto and text placement 2024-09-06 10:31:50 +02:00
Nicolas Demangeat
0d85b36ebb fix: 🐛 update ckeditor images upload/delete functionnalities 2024-09-06 10:06:32 +02:00
Nicolas Demangeat
79129feec2 fix: 🌐 bo traductions for news 2024-09-06 09:26:40 +02:00
Nicolas Demangeat
ba8cfb48e3 fix: 🐛 add getKey() in the booted method for NewsCategory model 2024-09-06 09:26:40 +02:00
Nicolas Demangeat
f5109fee1a feat: ✨ add News integration 2024-09-06 09:26:40 +02:00
Nicolas Demangeat
a82dcf4204 feat: ✨ add CRUD News 2024-09-06 09:26:40 +02:00
Nicolas Demangeat
0991a3941c feat: ✨ add CRUD NewsCorporate 2024-09-06 09:26:40 +02:00
Nicolas Demangeat
5350255a2e feat: ✨ add CRUD NewsCategory 2024-09-06 09:26:40 +02:00
Vincent BRIDIER
c6ac8e68c6 Merge branch 'issue-145' into 'le-gaulois-2024'
style: 💄 Some design changes

See merge request ldc-web/projets/le-gaulois!107
2024-09-06 07:20:06 +00:00
Nicolas Demangeat
636fb44364 wip: newsBreeding; staticPageTypeEnum + BreedingTypeEnum + controller + routes + providers + model + migration DONE; todo : CRUD bo and front 2024-09-05 16:40:55 +02:00
Karl Muller
b9d87a2590 style: 💄 design improvment 2024-09-05 16:25:30 +02:00
Karl Muller
d0879f6bdc fix: 💄 Some design changes 2024-09-05 16:06:41 +02:00
Vincent BRIDIER
39412059f1 Merge branch 'issue-153' into 'le-gaulois-2024'
feat: add admin secure

See merge request ldc-web/projets/le-gaulois!106
2024-09-04 09:25:55 +00:00
karl.muller
8e3f6198c7 feat: ➕ 📦 add admin secure - Close #153 2024-09-04 09:25:54 +00:00
Nicolas Demangeat
1474f56a08 wip: just a save 2024-09-04 08:57:32 +02:00
Vincent Crochard
01619e874a fix: 💬 update content on page engagement #110 2024-09-03 14:53:12 +02:00
Noah Lancien
aeb222b695 Merge branch 'le-gaulois-2024' into trunk 2024-09-03 14:15:04 +02:00
Vincent BRIDIER
68af20d25b Merge branch 'issue-137' into 'le-gaulois-2024'
feat: add the component for tracability

See merge request ldc-web/projets/le-gaulois!104
2024-09-03 07:31:23 +00:00
karl.muller
56c560e1a7 feat: add the component for tracability Close #137 2024-09-03 07:31:23 +00:00
Nicolas Demangeat
1794a79824 wip: just a save 2024-09-03 09:31:09 +02:00
Vincent BRIDIER
035a6ddfd9
Merge branch 'laravel-11' into le-gaulois-2024 2024-09-02 16:09:13 +02:00
Vincent BRIDIER
90834ce374
chore: 📦⬆️ Bump to Laravel 11 + Add Octane + Remove useless package for Hex Rules + Remove krlove/eloquent-model-generator 2024-09-02 16:07:45 +02:00
Noah Lancien
7b10461c5d fix: 500 error when trying to publish/unpublish historical milestones from the index 2024-09-02 15:14:50 +02:00
Noah Lancien
ebfab6e49e Merge branch 'le-gaulois-2024' into trunk 2024-08-30 16:01:33 +02:00
Noah Lancien
fff08ddd0a fix: compilation crashed - selector-no-qualifying-type error 2024-08-30 16:01:12 +02:00
Noah Lancien
72774975d1 Merge branch 'le-gaulois-2024' into trunk 2024-08-30 15:53:13 +02:00
Vincent BRIDIER
f7f7d02248 Merge branch 'issue-133' into 'le-gaulois-2024'
feat: ✨ integration 'les elevages de volailles'->index page, hard coded data

See merge request ldc-web/projets/le-gaulois!100
2024-08-30 13:49:35 +00:00
karl.muller
3da810162c feat: ✨ integration 'les elevages de volailles'->index page, hard coded data Close #133 2024-08-30 13:49:35 +00:00
Vincent BRIDIER
de955ed4f8 Merge branch 'issue-152-product-types-sql-crash' into 'le-gaulois-2024'
fix: added boolean value for 'published' in StoreProductTypeRequest

See merge request ldc-web/projets/le-gaulois!102
2024-08-30 13:35:19 +00:00
Noah Lancien
4fdf53b030 fix: added boolean value for 'published' in StoreProductTypeRequest 2024-08-30 15:27:06 +02:00
Vincent BRIDIER
7faec0a307 Merge branch 'issue-115' into 'le-gaulois-2024'
:fix 💬 🚚 update page and link #115

See merge request ldc-web/projets/le-gaulois!99
2024-08-30 13:19:24 +00:00
Vincent BRIDIER
6adcd10f6a Merge branch 'issue-120' into 'le-gaulois-2024'
fix: 💬 update page #120

See merge request ldc-web/projets/le-gaulois!98
2024-08-30 13:18:47 +00:00
Vincent BRIDIER
fd16a9e386 Merge branch 'issue-103' into 'le-gaulois-2024'
fix: 💬 🎨  update content and style #103

See merge request ldc-web/projets/le-gaulois!101
2024-08-30 13:16:08 +00:00
Vincent Crochard
0e36c1ea7e fix: 💬 🎨 update content and style #103 2024-08-30 13:54:50 +02:00
Vincent Crochard
41e0db010d fix: 🚚 add link route on btn #115 2024-08-30 10:10:21 +02:00
Vincent BRIDIER
4d9dbb4cf7 Merge branch 'issue-110' into 'le-gaulois-2024'
fix: 🍱 updates issue #110

See merge request ldc-web/projets/le-gaulois!97
2024-08-29 15:55:45 +00:00
Vincent Crochard
e2669c5abf fix: 🍱 updates issue #110 2024-08-29 17:47:09 +02:00
Vincent BRIDIER
7d0c9d2176 Merge branch 'issue-131' into 'le-gaulois-2024'
feat(fo): ✨ add les-eleveurs page

See merge request ldc-web/projets/le-gaulois!96
2024-08-29 15:24:39 +00:00
Karl Muller
08bc5795fd feat: ✨ add integration page (les elevages) 2024-08-29 16:42:12 +02:00
Vincent BRIDIER
0810e32fbe Merge branch 'issue-136' into 'le-gaulois-2024'
The anniversary page is complete.

See merge request ldc-web/projets/le-gaulois!95
2024-08-29 12:09:36 +00:00
karl.muller
a88ba56fb2 Close #136 - The anniversary page is complete. (40 ans) 2024-08-29 12:09:36 +00:00
Vincent Crochard
324f0ce79f Update 20240829 2024-08-29 12:24:47 +02:00
Karl Muller
7770e3a989 add links for breeding.index and breeding.breeder in the main menu + started the index header + change the way I display the title and subtitle from this header 2024-08-29 12:02:39 +02:00
Vincent Crochard
12265831e5 Update 20240828 2024-08-29 09:07:21 +02:00
Vincent BRIDIER
e788d84b31 Close issue #111 2024-08-28 15:34:19 +00:00
Vincent Crochard
13928cd0b8 Update 20240828 2024-08-28 16:19:15 +02:00
Noah Lancien
727a2a3ab6 Merge branch 'le-gaulois-2024' into trunk 2024-08-28 09:45:15 +02:00
noah.lancien
1ef4cef328 Merge branch '500-fixes-27-08-2024' into 'le-gaulois-2024'
Some fixes

See merge request ldc-web/projets/le-gaulois!93
2024-08-28 07:43:30 +00:00
Noah Lancien
738fea9021 fix: 500 error happened because products had a wrong submeat_id 2024-08-27 17:44:25 +02:00
Noah Lancien
73d22cf841 fix: 500 error because product_id wasn't nullable in videos table 2024-08-27 16:06:45 +02:00
Noah Lancien
a17d3855fa Merge branch 'le-gaulois-2024' into trunk 2024-08-27 13:16:53 +02:00
Vincent BRIDIER
b20605478f Merge branch 'issue-148' into 'le-gaulois-2024'
#148 Front of the page

See merge request ldc-web/projets/le-gaulois!92
2024-08-27 11:09:18 +00:00
karl.muller
cf8b97dffb Close #148 2024-08-27 11:09:18 +00:00
Vincent BRIDIER
3200a79366 Merge branch 'issue-145' into 'le-gaulois-2024'
end of issues #145 and #146

See merge request ldc-web/projets/le-gaulois!91
2024-08-27 09:09:09 +00:00
karl.muller
fca26d909d Closes #145 #146 2024-08-27 09:09:09 +00:00
Noah Lancien
e1242ead30 Merge branch 'le-gaulois-2024' into trunk 2024-08-26 15:23:03 +02:00
Vincent BRIDIER
f7132957ea
Bump to PHP8.3 2024-08-14 15:01:42 +02:00
Noah Lancien
edba19cddb Merge branch 'hire-page' into le-gaulois-2024 2024-08-09 13:53:58 +02:00
Noah Lancien
af583ab6dc feat: Added Testimonials CRUD + front in recruitment page 2024-08-09 13:44:11 +02:00
Noah Lancien
a4888da793 feat: Added multiple ckEditor configs 2024-08-09 10:54:55 +02:00
Nicolas Demangeat
05d2f69ce5 fix: add some css to improve description display 2024-08-08 10:15:22 +02:00
Nicolas Demangeat
7823a372f3 fix: recrutment page BO + FO, change the functions limit by card to 5 and limit the display to 5, change the bo professions form blade trad 2024-08-08 10:03:05 +02:00
Nicolas Demangeat
5e8225889a feat: add static pages for CGV and accessibility 2024-08-07 14:14:12 +02:00
Alexis Gousseau
e507153175 fix: 🐛 hide seo fields button when there isn't an authenticated user #142 2024-08-06 15:39:51 +02:00
Nicolas Demangeat
e098fb7912 feat: CRUD for news corporate + front in recruitment page 2024-08-05 10:30:57 +02:00
Alexis Gousseau
0ed0fdd807 fix: 🍱 update commitment images 2024-07-24 15:57:01 +02:00
Alexis Gousseau
d62e75bffc fix: 🌐 update translations in life commitment page 2024-07-24 15:21:21 +02:00
Alexis Gousseau
244e0a4d88 fix: 🌐 update translations in eat commitment page 2024-07-24 15:01:44 +02:00
Alexis Gousseau
3aa94b0e29 fix: 🌐 update translations in raise commitment page 2024-07-24 12:22:36 +02:00
Alexis Gousseau
8058cf3667 fix: 🌐 update translations in brand commitment page 2024-07-24 10:08:03 +02:00
Alexis Gousseau
918b092d1f fix: 🌐 update translations in respect commitment page 2024-07-23 15:25:30 +02:00
Alexis Gousseau
ce189ec505 feat: ✨ add historical milestone integration 2024-07-23 14:57:35 +02:00
Jérémy Munsch
46363671db Merge branch 'club' into le-gaulois-2024 2024-07-19 13:13:42 +02:00
Jérémy Munsch
7fb95063aa remove mail from login 2024-07-19 13:13:33 +02:00
Jérémy Munsch
b18f53fd0b Merge branch 'club' into le-gaulois-2024 2024-07-19 12:06:12 +02:00
Jérémy Munsch
d7e9facc29 Notification mail 2024-07-19 12:05:37 +02:00
Jérémy Munsch
ba401e52a1 chat reset message when switching conversation 2024-07-18 16:42:47 +02:00
Jérémy Munsch
78ac5cd26f chat search filter message 2024-07-18 16:40:24 +02:00
Jérémy Munsch
334f194ce6 MEssage fix block state 2024-07-18 16:36:47 +02:00
Jérémy Munsch
0ec8c6b23c Fix send message request 2024-07-18 16:34:58 +02:00
Jérémy Munsch
c1aeeebcc5 chat style fix 2024-07-18 16:28:58 +02:00
Jérémy Munsch
c113b7d26c chat increase fetchConversationTimeout to 10sec 2024-07-18 16:27:44 +02:00
Jérémy Munsch
80791b62ac bourse fix dep search 2024-07-18 16:25:46 +02:00
Jérémy Munsch
33931707de Stock exchange style 2024-07-18 16:11:10 +02:00
Jérémy Munsch
c1f3b6a7d8 Merge branch 'club' into le-gaulois-2024 2024-07-18 14:59:08 +02:00
Jérémy Munsch
3d49af5943 club add layout bottom spacing form menu bar 2024-07-18 14:58:23 +02:00
Jérémy Munsch
87e690ad04 bourse add text 2024-07-18 14:56:12 +02:00
Jérémy Munsch
e8dc7402e7 departaimant messages button 2024-07-18 12:13:35 +02:00
Jérémy Munsch
744dcab4b0 notificaitons index display no notificaitons 2024-07-18 11:48:08 +02:00
Jérémy Munsch
b2011bd384 chat set active message on load 2024-07-18 11:46:45 +02:00
Jérémy Munsch
b3eaafafeb Merge branch 'club' into le-gaulois-2024 2024-07-18 11:42:03 +02:00
Jérémy Munsch
ad47fda9e6 club message cahnge blade notificaiton count 2024-07-18 11:40:55 +02:00
Jérémy Munsch
8dc8e637e8 club menu notificaitons count 2024-07-18 11:39:05 +02:00
Jérémy Munsch
fbd87cc7d5 chat message notificaitons 2024-07-18 11:16:10 +02:00
Alexis Gousseau
697770531f feat: ✨ add paragraph with visual in story page 2024-07-18 11:06:08 +02:00
Jérémy Munsch
b5e0b93bfd
Merge branch 'club' into le-gaulois-2024 2024-07-17 16:29:56 +02:00
Jérémy Munsch
a27dc0198f
Add delete old messages 2024-07-17 16:29:49 +02:00
Jérémy Munsch
2df4f146d2
Merge branch 'club' into le-gaulois-2024 2024-07-17 16:27:33 +02:00
Jérémy Munsch
aff98bd919
chat prevent extra entry on submit error 2024-07-17 16:27:15 +02:00
Jérémy Munsch
52c30c56c7
encrypt chat messages 2024-07-17 16:26:57 +02:00
Jérémy Munsch
af81e6919f
Merge branch 'club' into le-gaulois-2024 2024-07-17 16:04:05 +02:00
Jérémy Munsch
08d7c0a396
chat fixes 2024-07-17 16:02:24 +02:00
Jérémy Munsch
60eed18749
chat styled 2024-07-17 15:45:55 +02:00
Alexis Gousseau
6b427a38fc fix: 💄 update commitment navigation on mobile 2024-07-17 15:36:23 +02:00
Jérémy Munsch
a35c1ee5b0
messagerie fonctionnelle 2024-07-17 12:45:43 +02:00
Vincent BRIDIER
3d26b21ccb Merge branch 'le-gaulois-2024' into 'trunk'
fix: ⚡️ feedback fetch jobs method

See merge request ldc-web/projets/le-gaulois!89
2024-07-17 10:33:40 +00:00
Alexis Gousseau
18b0e27d07 fix: ⚡ feedback fetch jobs method 2024-07-17 11:42:30 +02:00
Jérémy Munsch
fc48a44ca2
notification_count fix 2024-07-17 10:43:13 +02:00
Alexis Gousseau
21871a3d5c feat: ✨ add job/command to fetch offers from digital recruiter 2024-07-16 18:19:52 +02:00
Alexis Gousseau
1277747239 fix: 🐛 correct the line border in respect commitment page 2024-07-16 18:19:28 +02:00
Alexis Gousseau
590177cc02 fix: 💄 update front navigation style 2024-07-16 18:19:28 +02:00
Alexis Gousseau
1808006e18 feat: ✨ add offers integration part in recruitment page 2024-07-16 18:19:28 +02:00
Alexis Gousseau
d01bf1d824 fix: 💄 update commitments/brand routes 2024-07-16 18:14:22 +02:00
Vincent BRIDIER
8cfb542bb7
Merge branch 'le-gaulois-2024' into trunk 2024-07-16 16:28:04 +02:00
Alexis Gousseau
49ed999526 fix: 🐛 update migrations/seeders 2024-07-16 16:22:36 +02:00
Vincent BRIDIER
ee871fb174
Merge branch 'le-gaulois-2024' into trunk 2024-07-16 15:42:39 +02:00
Vincent BRIDIER
b34e2f672a
Update manifest 2024-07-16 15:40:58 +02:00
Vincent BRIDIER
bb191fac43
Merge branch 'le-gaulois-2024' into trunk 2024-07-16 15:35:17 +02:00
Jérémy Munsch
a80f4effdf
Message chat partial 2024-07-16 12:16:44 +02:00
Alexis Gousseau
14918d94be refactor: ♻️ replace fixme in video card for packaging product 2024-07-16 11:03:55 +02:00
Jérémy Munsch
07c11d21eb
contact report customer 2024-07-16 10:55:33 +02:00
Jérémy Munsch
3ab1978d2f
send message fix notification dest 2024-07-16 10:50:29 +02:00
Jérémy Munsch
d8842a3898
Merge branch 'club' into le-gaulois-2024 2024-07-16 10:48:27 +02:00
Jérémy Munsch
780becf1e2
message chat 2024-07-16 10:47:23 +02:00
Alexis Gousseau
7922c5406b fix: 🐛 update products relations options on SET NULL 2024-07-16 10:09:43 +02:00
Jérémy Munsch
81c6baf850
Axios module 2024-07-16 10:07:55 +02:00
Jérémy Munsch
532bab2cc4
club notifications 2024-07-15 11:09:34 +02:00
Alexis Gousseau
a5c12b4cb6 feat: ✨ add historical milestones CRUD 2024-07-15 10:34:42 +02:00
Alexis Gousseau
10eb7bc0aa Merge branch 'crud-offers' into le-gaulois-2024 2024-07-15 10:26:21 +02:00
Alexis Gousseau
8caad34202 feat: ✨ add offers CRUD 2024-07-15 10:25:41 +02:00
Jérémy Munsch
0587fe5761
Notification count 2024-07-15 10:23:12 +02:00
Jérémy Munsch
c26d1089bf
Merge branch 'club' into le-gaulois-2024 2024-07-12 16:33:40 +02:00
Jérémy Munsch
64471ddce8
Club message send 2024-07-12 16:33:26 +02:00
Jérémy Munsch
2c8be79fe3
Merge branch 'club' into le-gaulois-2024 2024-07-12 15:07:14 +02:00
Jérémy Munsch
95b5ac1000
CustomerFactory fix 2024-07-12 15:07:07 +02:00
Jérémy Munsch
49bfc31f8f
Merge branch 'club' into le-gaulois-2024 2024-07-12 15:04:48 +02:00
Jérémy Munsch
b1c627176f
add missing customer seeder 2024-07-12 15:04:39 +02:00
Jérémy Munsch
7338a86491
Merge branch 'club' into le-gaulois-2024 2024-07-12 14:46:01 +02:00
Jérémy Munsch
2e46d53039
dep styled 2024-07-12 14:44:38 +02:00
Alexis Gousseau
82c20ff1b9 feat: ✨ add seo laravel package 2024-07-12 11:39:15 +02:00
Alexis Gousseau
1490131547 refactor: ♻️ add minicrud to static pages and move specific settings in it (products/recipes) - issue #81 2024-07-12 11:38:57 +02:00
Jérémy Munsch
b0b9e8c073
add missing shadow to nav 2024-07-11 16:06:39 +02:00
Jérémy Munsch
920a0167c7
Deps working 2024-07-11 15:46:43 +02:00
Jérémy Munsch
b1b918a3d1
Merge branch 'club' into le-gaulois-2024 2024-07-11 10:09:58 +02:00
Jérémy Munsch
7d672135c5
Change throttle 2024-07-11 10:08:49 +02:00
Alexis Gousseau
2ac9b07635 refactor: ♻️ use product model in product-card-tiny blade 2024-07-09 16:28:04 +02:00
Thibault Raquet
1250a94e56 Add new file 2024-07-09 12:27:21 +00:00
Thibault Raquet
9817a6b469 Update manifest.yaml 2024-07-09 12:27:04 +00:00
Alexis Gousseau
e66ebe6308 feat: ♿ add information text when all elements are displayed on products.index & recipes.index 2024-07-09 14:03:59 +02:00
Alexis Gousseau
c50455f1cd refactor: ♻️ mutualize commitments slider on home and products.show 2024-07-09 13:46:59 +02:00
Alexis Gousseau
207c174bc5 fix: 💄 finalizing integration details 2024-07-09 13:01:25 +02:00
Alexis Gousseau
2cd893e2ec feat: ✨ complete eat commitment page integration 2024-07-09 13:00:43 +02:00
Alexis Gousseau
115fe360e6 feat: ✨ add fifth commitment page (respect) 2024-07-09 13:00:43 +02:00
Alexis Gousseau
f3d12004e2 feat: ✨ add fourth commitment page (life) 2024-07-09 13:00:43 +02:00
Alexis Gousseau
368485b83e feat: ✨ add third commitment page (eat) 2024-07-09 13:00:43 +02:00
Jérémy Munsch
3dd22cfb12
Merge branch 'club' into le-gaulois-2024 2024-07-09 12:01:31 +02:00
Jérémy Munsch
045f2abce5
club account responsive and integration ok 2024-07-09 12:00:29 +02:00
Jérémy Munsch
f18ece6893
Customer form birthday 2024-07-09 10:01:32 +02:00
Jérémy Munsch
6ecafee16f
club account forms 2024-07-08 16:15:49 +02:00
Jérémy Munsch
88631d3069
club card departaimant 2024-07-08 11:13:33 +02:00
Jérémy Munsch
263ec25557
Card club favorite 2024-07-08 10:37:10 +02:00
Jérémy Munsch
c61ae8cf12
club auth 2024-07-05 16:34:57 +02:00
Jérémy Munsch
710033ffd7
RedirectIfAuthenticated club redirect 2024-07-05 12:37:51 +02:00
Jérémy Munsch
03ab2f9313
fix club login page 2024-07-05 12:36:24 +02:00
Jérémy Munsch
fc715477e4
club register page 2024-07-05 12:35:09 +02:00
Jérémy Munsch
31b653904a
club login page 2024-07-05 11:56:46 +02:00
Jérémy Munsch
777d69acf0
Merge branch 'club' into le-gaulois-2024 2024-07-05 10:36:06 +02:00
Jérémy Munsch
f83b1ac5c2
Add club pages 2024-07-05 10:35:26 +02:00
Jérémy Munsch
c8528c3a17
remove section-games missing gutter 2024-07-05 09:25:08 +02:00
Jérémy Munsch
37e792d65e
remove dumps 2024-07-05 09:24:41 +02:00
Jérémy Munsch
9557ff9494
club game point progress 2024-07-04 16:34:10 +02:00
Alexis Gousseau
334d3954bf feat: ✨ add second commitment page (raise) 2024-07-04 14:38:07 +02:00
Jérémy Munsch
68139acee7
club-card-game points 2024-07-04 11:56:50 +02:00
Jérémy Munsch
9e3c120d9f
club game slider 2024-07-04 11:50:07 +02:00
Jérémy Munsch
99e984a971
La communauté aimant 2024-07-04 09:43:07 +02:00
Jérémy Munsch
b701de16f1
club guest home fix rounded-section-bottom 2024-07-03 14:56:20 +02:00
Alexis Gousseau
e1e5796314 feat: ✨ add first commitment page (brand) 2024-07-03 14:46:00 +02:00
Jérémy Munsch
fe800bebb6
club discount cards swiper 2024-07-02 14:54:11 +02:00
Jérémy Munsch
628769dbae
discount card product placeholder 2024-07-02 11:42:44 +02:00
Jérémy Munsch
f246d207d3
Merge branch 'club' into le-gaulois-2024 2024-07-02 11:29:11 +02:00
Jérémy Munsch
33f48c9429
club discount card 2024-07-02 11:28:47 +02:00
Jérémy Munsch
c4ccd70fd0
club mobile coupon print 2024-07-02 09:55:01 +02:00
Jérémy Munsch
c51aabbc33
Fix Blade money directive 2024-07-01 16:19:22 +02:00
Jérémy Munsch
a13428ca38
copy club footer svg f 2024-07-01 15:53:50 +02:00
Jérémy Munsch
29a53f53bd
club homenav moves to homepage 2024-07-01 15:50:28 +02:00
Jérémy Munsch
0403c19796
club loggedin home page nav 2024-07-01 15:28:45 +02:00
Alexis Gousseau
b28be1e78d fix: 🔥 hide nutritionnal values on product.show 2024-07-01 14:10:56 +02:00
Alexis Gousseau
0f4ba9a89a fix: 🐛 update input fields name for bo search fonctionnality 2024-07-01 14:10:56 +02:00
Alexis Gousseau
37120ebc6f fix: ✨ complete product integration 2024-07-01 14:10:56 +02:00
Alexis Gousseau
cae7d8076f refactor: ♻️ update recipes/products data on index page with filters data 2024-07-01 14:10:54 +02:00
Alexis Gousseau
fd40708d2c fix: 🔥 hide product discover functionnality because of client decision 2024-07-01 14:07:43 +02:00
Alexis Gousseau
fec668e41a feat: ✨ add buttons prev/next (depending on the filters) on products.show 2024-07-01 14:07:43 +02:00
Alexis Gousseau
f7c15c2abb fix: 🌱 change size of the product type image 2024-07-01 14:07:43 +02:00
Alexis Gousseau
38c046d37e fix: 🌱 change size of the approach image 2024-07-01 14:07:43 +02:00
Alexis Gousseau
100e31d173 feat: ✨ add button field link on demarche 2024-07-01 14:07:43 +02:00
Alexis Gousseau
ecc06381b0 fix: 🌐 update translation select entity 2024-07-01 14:07:43 +02:00
Jérémy Munsch
3d65b7de50
Merge branch 'club' into le-gaulois-2024 2024-07-01 12:15:03 +02:00
Jérémy Munsch
99605561ff
club bs variable update 2024-07-01 12:14:25 +02:00
Jérémy Munsch
402c084542
composer update 2024-07-01 11:29:57 +02:00
Jérémy Munsch
557c1fb828
Merge branch 'club' into le-gaulois-2024 2024-07-01 11:27:44 +02:00
Jérémy Munsch
fb06debc9c
Goto page i18n 2024-07-01 11:26:38 +02:00
Jérémy Munsch
c1d933fbe0
differents club homepages 2024-07-01 11:13:29 +02:00
Jérémy Munsch
c91a22c39f
club auth 2024-07-01 10:50:41 +02:00
Jérémy Munsch
cf09268319
add customers 2024-07-01 10:22:38 +02:00
Jérémy Munsch
9d227984e3
must be auth for nav menu 2024-07-01 10:12:37 +02:00
Jérémy Munsch
1f09068bf5
home page 2024-07-01 10:10:57 +02:00
Jérémy Munsch
472c2cb848
club home layout 2024-06-28 16:23:21 +02:00
Jérémy Munsch
aca3f1cef1
info cards 2024-06-28 16:05:48 +02:00
Jérémy Munsch
c852292c72
fix club hoem cards overflow on chrome 2024-06-28 15:43:22 +02:00
Jérémy Munsch
8ef0beec18
club home slider 2024-06-28 12:20:33 +02:00
Jérémy Munsch
fdf1a89a77
card club home a11y + mobile inscription 2024-06-28 11:30:21 +02:00
Jérémy Munsch
c0d59983d6
customer-points a11y 2024-06-28 11:25:34 +02:00
Jérémy Munsch
115558439f
icons a11y 2024-06-28 11:25:14 +02:00
Jérémy Munsch
ce60ee00fd
club card members 2024-06-28 10:36:50 +02:00
Jérémy Munsch
2de95ca830
club home promo on cards 2024-06-28 10:23:11 +02:00
Jérémy Munsch
0f20b6e811
add Php money 2024-06-28 10:06:04 +02:00
Jérémy Munsch
10c1bd66be
role img to blade svg 2024-06-27 16:28:44 +02:00
Jérémy Munsch
ef320cd1f1
sass fix 2024-06-27 16:26:11 +02:00
Jérémy Munsch
1913a300de
club cards wip 2024-06-27 16:21:35 +02:00
Jérémy Munsch
057aa9f933
club header back button 2024-06-27 15:20:02 +02:00
Jérémy Munsch
3b733aa67a
club header 2024-06-27 15:03:19 +02:00
Jérémy Munsch
ba3a7d3895
menu notification badge 2024-06-27 11:22:03 +02:00
Jérémy Munsch
4adeda874b
searchoffcanvas ok 2024-06-27 11:10:27 +02:00
Jérémy Munsch
08b5726748
polyfill for form floating 2024-06-27 10:46:06 +02:00
Jérémy Munsch
9d35e2e9df
fa menu ok 2024-06-27 09:46:05 +02:00
Jérémy Munsch
a6c43e7a65
menu link height fix responsive 2024-06-26 16:28:30 +02:00
Jérémy Munsch
f7ff4366f6
offcanvas fo.home link 2024-06-26 16:24:29 +02:00
Jérémy Munsch
c7da059b55
focus ring fix club 2024-06-26 16:24:10 +02:00
Jérémy Munsch
0417c8c2ea
club menu 2024-06-26 16:17:35 +02:00
Jérémy Munsch
494086b30a
nav zindex 2024-06-26 14:32:19 +02:00
Jérémy Munsch
65b02d74f0
rounded fix 2024-06-26 12:26:46 +02:00
Jérémy Munsch
556b2175a0
menu 2024-06-26 12:19:34 +02:00
Jérémy Munsch
d856332f8e
BS colors 2024-06-26 11:12:04 +02:00
Jérémy Munsch
64c2e5160d
singleton scss front colors 2024-06-24 16:10:58 +02:00
Jérémy Munsch
b75f067c45
Add club part 2024-06-24 15:38:31 +02:00
Jérémy Munsch
be23f1e8e4
fix redirect if authenticated 2024-06-24 14:58:06 +02:00
Jérémy Munsch
99d19ff958
fix productFactory 2024-06-24 14:39:39 +02:00
Jérémy Munsch
6054efe76f
Fix Consumption moments seeder 2024-06-24 14:31:32 +02:00
Jérémy Munsch
16f5b9de8b
fix static page seeder 2024-06-24 14:28:33 +02:00
Jérémy Munsch
e189b848b3
fix general settings migration 2024-06-24 14:20:09 +02:00
Jérémy Munsch
cb45618c2c
fix product_types published migration 2024-06-24 13:59:56 +02:00
Jérémy Munsch
59be9dee3f
IsCachedAsCollection 2024-06-21 15:26:40 +02:00
Alexis Gousseau
7335b0489f feat: ✨ add user filter on activity log 2024-06-20 17:36:47 +02:00
Vincent BRIDIER
f135a01073 Merge branch 'le-gaulois-2024' into trunk 2024-06-20 15:52:56 +02:00
Alexis Gousseau
682731ae05 fix: 🐛 add condition if video id is null when printing recipe 2024-06-20 15:45:03 +02:00
Alexis Gousseau
6e21341112 fix: 🐛 update routes for ranges slider in home page 2024-06-20 15:43:57 +02:00
Alexis Gousseau
db7006e95b fix 🐛 update menu node links 2024-06-20 13:09:41 +02:00
Alexis Gousseau
52b6c46023 refactor: ♻️ replace model->id by the primary key 2024-06-20 12:32:28 +02:00
Alexis Gousseau
47c10a90e8 feat: ✨ add products integrations (index/show) 2024-06-20 12:29:19 +02:00
Alexis Gousseau
9b8d457360 feat: ✨ add a display page for users 2024-06-17 11:31:37 +02:00
Alexis Gousseau
18ca71d29f feat: ✨ update products relations (range/subrange/meat/submeat) 2024-06-17 11:31:09 +02:00
Alexis Gousseau
b6853a9fca feat: ✨ add published status on product type model 2024-06-13 16:56:46 +02:00
Vincent BRIDIER
4af7c0cd49
Merge branch 'le-gaulois-2024' into trunk 2024-06-13 15:01:17 +02:00
Alexis Gousseau
34bb5c4120 feat: add associated models (claims/productTypes/meats/submeat) fields in product form 2024-06-13 12:37:18 +02:00
Alexis Gousseau
6b847a7931 fix: 🐛 correct the search by text for recipes 2024-06-12 15:51:38 +02:00
Alexis Gousseau
15111d9995 fix: 🐛 add videos json paginate route 2024-06-12 15:28:34 +02:00
Alexis Gousseau
8242ec91b8 fix: 🗃️ add migration in order to clean RE7 database 2024-06-12 12:51:33 +02:00
Vincent BRIDIER
19f2041b96
Merge branch 'le-gaulois-2024' into trunk 2024-06-12 12:02:21 +02:00
Alexis Gousseau
d2f9e9cc7d feat: ✨ complete CRUD product 2024-06-12 11:56:58 +02:00
Vincent BRIDIER
eaf7694374
Merge branch 'le-gaulois-2024' into trunk 2024-06-11 14:55:25 +02:00
Alexis Gousseau
4ad19577f6 feat: ✨ add CRUD claims 2024-06-10 16:51:32 +02:00
Alexis Gousseau
35fc53e230 feat: ✨ add CRUD product types 2024-06-10 16:26:31 +02:00
Alexis Gousseau
a70f082d5d refactor: ♻️ upgrade sidemenu bo to remove static_pages & configuration buttons 2024-06-06 16:12:36 +02:00
Alexis Gousseau
05e667df5b fix: 🎨 resolve phpcs errors 2024-06-06 11:12:12 +02:00
Alexis Gousseau
467478a8ba feat: ✨ add recipes.index integration 2024-06-06 11:11:47 +02:00
Nicolas Demangeat
062a8defad change sidemenu BO to be more user friendly 2024-06-03 14:38:06 +02:00
Nicolas Demangeat
97342e2856 add migration for static pages + front integration of the banner 2024-05-31 12:04:05 +02:00
Nicolas Demangeat
1ba168413c add headerr-banner blade layouts 2024-05-30 12:10:02 +02:00
Nicolas Demangeat
8f293fbf53 improve slider video on homepage by changing the script in common.ts 2024-05-29 15:45:21 +02:00
Nicolas Demangeat
8446b9b8c4 change the prepareForValidation in updateApproachRequest 2024-05-29 11:07:32 +02:00
Nicolas Demangeat
4d2c87acee fix trad + bug fix for approaches duplicate 2024-05-28 15:51:23 +02:00
Nicolas Demangeat
e7ccd8996e add videos slider on homepage 2024-05-27 17:29:42 +02:00
Nicolas Demangeat
95e2b69c8d fix StroeApproachRequest, add the enum validation and change the type in prepareForValidation 2024-05-22 16:13:27 +02:00
Alexis Gousseau
3c8c2cae49 fix phpstan config & eslint errors 2024-05-22 11:33:17 +02:00
Jérémy Munsch
45b2cab4f1
Merge branch 'le-gaulois-2024' into trunk 2024-05-22 11:16:38 +02:00
Alexis Gousseau
945fd3416a fix recipe.show integration 2024-05-22 11:09:42 +02:00
Nicolas Demangeat
16c79c9036 add artisan::call in migrations where that was missing 2024-05-22 11:07:22 +02:00
Nicolas Demangeat
1e5d5192ad fix z-index menu layout 2024-05-21 15:40:54 +02:00
Jérémy Munsch
c4572fefa4
Merge branch 'le-gaulois-2024' into trunk 2024-05-21 15:17:02 +02:00
Alexis Gousseau
fc7a509ab0 add recipes.show integration 2024-05-21 14:56:14 +02:00
Alexis Gousseau
4b092b92f8 add CRUD recipe 2024-05-21 14:56:14 +02:00
Nicolas Demangeat
986bbb1b8c bug fix in generalSettingController for hotNews in update methode for the picture + trad fix for keyNumber 2024-05-21 14:37:24 +02:00
Nicolas Demangeat
b7b7115225 bug fix displaying the good sub_label menu 2024-05-14 16:07:35 +02:00
Nicolas Demangeat
564ee77084 add saga-publicitaire front 2024-05-14 15:16:35 +02:00
Nicolas Demangeat
d655eeea9c update laravel-validation-rules/colour 2024-05-07 15:11:16 +02:00
Nicolas Demangeat
9bfd475a0e bug fix, add $meat_id on on submeat model 2024-05-07 11:43:57 +02:00
Nicolas Demangeat
3e8a20e512 bug fix on meats form for the int-color module 2024-05-07 11:13:31 +02:00
Nicolas Demangeat
bba1aaecd9 add search belongsto dropdown to video crud 2024-05-07 10:51:33 +02:00
Jérémy Munsch
c940e9d946
Merge branch 'le-gaulois-2024' into trunk 2024-04-30 15:12:41 +02:00
Nicolas Demangeat
1fb5c73a23 fix change-published-status module + fix some trad for video 2024-04-30 14:25:56 +02:00
Nicolas Demangeat
4bfff16246 add CRUD video and fix conflict 2024-04-30 13:52:20 +02:00
Nicolas Demangeat
8836c15a0f add CRUD Video 2024-04-30 11:57:43 +02:00
Jérémy Munsch
747da7beff
Merge branch 'le-gaulois-2024' into trunk 2024-04-29 10:24:22 +02:00
Alexis Gousseau
fecbfbc314 update icons bo in side menu 2024-04-26 17:25:52 +02:00
Alexis Gousseau
5b214500a7 update to only use one vue component for belongs-to relationship 2024-04-26 16:34:20 +02:00
Jérémy Munsch
02af509c1b
Merge branch 'le-gaulois-2024' into trunk 2024-04-26 10:28:35 +02:00
Alexis Gousseau
e0dbae1c61 merge migrations 2024-04-26 10:25:03 +02:00
Alexis Gousseau
2a9859bc90 update vue components with composition style 2024-04-26 10:20:13 +02:00
Alexis Gousseau
4f952a89ca add text_color and published fields on the menu configuration 2024-04-26 10:20:13 +02:00
Alexis Gousseau
0fb382c0a6 use approach enum properly 2024-04-26 10:20:13 +02:00
Alexis Gousseau
1c429eaf64 update bootstrap badge background color 2024-04-26 10:20:13 +02:00
Alexis Gousseau
8ea947405a update indent php files 2024-04-26 10:20:13 +02:00
Nicolas Demangeat
22d4ecc973 bug fix for hot news 2024-04-26 09:29:39 +02:00
Nicolas Demangeat
30fb3f7bbc CRUD for consumption moment 2024-04-25 16:58:41 +02:00
Nicolas Demangeat
4da1197ec6 fix woodbackground display and hotnews mobile version 2024-04-25 08:47:44 +02:00
Nicolas Demangeat
2844fe1811 words break for the news title for hot news 2024-04-24 16:23:56 +02:00
Nicolas Demangeat
b8a24136e8 update hotnews front display in homepage 2024-04-24 14:20:50 +02:00
Nicolas Demangeat
d18427f299 add hot news on home page 2024-04-24 12:06:45 +02:00
Jérémy Munsch
d83fdc103c
Merge branch 'le-gaulois-2024' into trunk 2024-04-19 12:49:22 +02:00
Jérémy Munsch
50f6f68f79
Fix partial demo 2024-04-19 12:49:10 +02:00
Jérémy Munsch
20c0fe4a84
Merge branch 'le-gaulois-2024' into trunk 2024-04-19 12:36:21 +02:00
Jérémy Munsch
49bf382e60
Bug fixes from dyn menu 2024-04-19 12:23:01 +02:00
Jérémy Munsch
89ebb1528b
Fix menu offset 2024-04-19 11:59:53 +02:00
Alexis Gousseau
0089fe0ff9 resolv phpcs/phpstan errors 2024-04-19 11:37:53 +02:00
Jérémy Munsch
859ca37828
comment fake usage from Home Controller 2024-04-18 15:46:32 +02:00
Noah Lancien
db2a5f564f Updated the way we report errors in optin function 2024-04-18 15:35:30 +02:00
Alexis Gousseau
3a0dca69a6 fix fake on homepage + other litle fixes 2024-04-18 15:21:18 +02:00
Jérémy Munsch
dd26444705
Merge branch 'le-gaulois-2024' into trunk 2024-04-18 14:38:20 +02:00
Alexis Gousseau
4ae5dc2322 update colors component 2024-04-18 14:31:19 +02:00
Alexis Gousseau
946b2ae323 add main slider relation to approach model 2024-04-18 13:04:44 +02:00
Alexis Gousseau
01c1b9df45 add labels/demarches CRUDs 2024-04-18 13:00:19 +02:00
Alexis Gousseau
862ce6de06 add recipes in home page 2024-04-18 13:00:19 +02:00
Jérémy Munsch
4ed253b50d
Fix MAin menu setting component 2024-04-18 12:23:05 +02:00
Jérémy Munsch
205b5bb401
Dyn menu linked to the front 2024-04-18 12:05:10 +02:00
Jérémy Munsch
880ed70d9f
BO for dyn menu validated + Image Input fixed 2024-04-17 16:58:35 +02:00
Jérémy Munsch
eb2afed1a7
Bo dynamic menu ok 2024-04-16 16:53:38 +02:00
Nicolas Demangeat
4a8d615387 fix hot news 2024-04-16 16:52:34 +02:00
Jérémy Munsch
34ef85a4ea
Refactor Image input component 2024-04-16 13:03:51 +02:00
Noah Lancien
5d081a72bc Ranges/Meats phpstan/phpcs fixes 2024-04-16 11:07:16 +02:00
Noah Lancien
9abc118780 Added order for submodels in ranges/meats 2024-04-16 10:33:39 +02:00
Noah Lancien
ed3e7636b8 Added (sub)meat/(sub)range basic cruds 2024-04-16 10:33:36 +02:00
Nicolas Demangeat
116722ea8c wip hot news, update method NOK, cannot save the settings for hotNews 2024-04-15 14:41:23 +02:00
Jérémy Munsch
55e7c7f351
Merge branch 'dyn-menu' into le-gaulois-2024 2024-04-12 10:20:23 +02:00
Jérémy Munsch
34172a811d
TEMP Setting MEnu partial ok 2024-04-12 10:18:11 +02:00
Noah Lancien
e51a05d8c8 Updated the way we split news for the homepage 2024-04-11 15:20:27 +02:00
Noah Lancien
645738d233 Moved news getter logic in a method 2024-04-11 13:22:27 +02:00
Noah Lancien
161aabbee7 Added the news section in the homepage (static) 2024-04-11 13:19:08 +02:00
Alexis Gousseau
dfa5a52cbc add sliders ranges/products in home page 2024-04-11 12:48:37 +02:00
Jérémy Munsch
6aa7e3ca69
Customizable title 2024-04-11 09:37:38 +02:00
Noah Lancien
b509fa1b6d Added the newsletters section + the CRM package 2024-04-10 16:47:04 +02:00
Alexis Gousseau
5e572b17d2 update main slider colors/arrow 2024-04-10 15:13:53 +02:00
Jérémy Munsch
16e14cd24a
Merge branch 'dyn-menu' into le-gaulois-2024 2024-04-10 09:14:31 +02:00
Jérémy Munsch
287cf352ea
update menu node links usage within blades 2024-04-09 15:30:54 +02:00
Jérémy Munsch
fe3edbcb99
Add partial front bounds for dynamic menu 2024-04-09 15:20:28 +02:00
Jérémy Munsch
c5db586470
Merge branch 'le-gaulois-2024' into trunk 2024-04-09 14:03:45 +02:00
Jérémy Munsch
580530b4d7
update settings color 2024-04-09 12:38:19 +02:00
Jérémy Munsch
b5460c7008
Setup partial BO menu configuration 2024-04-09 12:38:19 +02:00
Alexis Gousseau
d9e2baba80 add commitment slider in home page 2024-04-09 11:39:12 +02:00
Nicolas Demangeat
0b8614ade4 update partial-demo blade for the include of product 2024-04-09 10:53:46 +02:00
Alexis Gousseau
4d8bb571af add integrations for sliders in home 2024-04-09 10:24:03 +02:00
Alexis Gousseau
d81a7906c4 add CRUD for home sliders 2024-04-09 10:16:51 +02:00
Nicolas Demangeat
00f8b8c5ee display bug fix on product card blade 2024-04-08 11:07:57 +02:00
Jérémy Munsch
b1dffb5fca
Merge branch 'le-gaulois-2024' into trunk 2024-04-08 09:33:23 +02:00
Jérémy Munsch
a7118df513
allow to view demo pages in staging 2024-04-08 09:33:16 +02:00
Jérémy Munsch
445b63695c
Merge branch 'le-gaulois-2024' into trunk 2024-04-08 09:19:25 +02:00
Nicolas Demangeat
e9d02d13d8 add variable isFavorite for product card 2024-04-08 08:56:15 +02:00
Jérémy Munsch
d235c68262
Merge branch 'le-gaulois-2024' into trunk 2024-04-04 14:21:53 +02:00
Jérémy Munsch
33debba630
phpcs fix 2024-04-04 14:19:53 +02:00
Jérémy Munsch
b23a7d8a54
Merge branch 'le-gaulois-2024' into trunk 2024-04-04 13:04:40 +02:00
Jérémy Munsch
2123bfb81b
change gitlab-ci to use php8.2 as 8.3 is not available 2024-04-04 13:04:31 +02:00
Jérémy Munsch
101aa5f5e8
Merge branch 'le-gaulois-2024' into trunk 2024-04-04 13:02:18 +02:00
Jérémy Munsch
04ac933024
add CD manifest 2024-04-04 12:59:06 +02:00
Jérémy Munsch
5ad800f39c
Merge branch 'le-gaulois-2024' into trunk 2024-04-04 12:34:22 +02:00
Jérémy Munsch
bf3580fb9c
manually init with files from le-gaulois-2024 branch 2024-04-04 12:34:11 +02:00
Jérémy Munsch
b9c0d478cc
empty project 2024-04-04 12:22:38 +02:00
Jérémy Munsch
ea3f35fdc3
composer update and set specifically php8.2 version 2024-04-04 12:08:31 +02:00
Jérémy Munsch
9cd93328b4
Merge branch 'develop' into trunk 2024-04-04 11:56:23 +02:00
Jérémy Munsch
acc1ff79e7 Merge branch 'wording' into 'develop'
remove old string (fix #58)

See merge request ldc-web/projets/le-gaulois!81
2024-04-04 09:55:11 +00:00
Nicolas Demangeat
ea9d3bd64c fix href in collapse left blade 2024-04-03 10:38:27 +02:00
Nicolas Demangeat
8713271e72 integration keynumber in story.blade fo 2024-04-02 10:58:38 +02:00
Alexis Gousseau
a69259ed7e update errors pages 2024-03-29 16:32:39 +01:00
Nicolas Demangeat
6c56996ca7 resolv conflict 2024-03-29 16:22:49 +01:00
Nicolas Demangeat
8b8f6963cf add crud key_number 2024-03-29 16:19:12 +01:00
Alexis Gousseau
eb9a46efd5 fix front menu collapse 2024-03-29 15:29:35 +01:00
Noah Lancien
439c227d10 Renamed keyNumber into key_number when needed 2024-03-29 14:54:59 +01:00
Nicolas Demangeat
77b5b2f941 wip crud keynumber, cant delete create show 2024-03-29 14:19:59 +01:00
Noah Lancien
9675228e3b Added brandAvantages CRUD 2024-03-29 09:43:11 +01:00
Alexis Gousseau
c926e65fcb remove old string (fix #58) 2024-03-28 14:46:32 +01:00
Alexis Gousseau
69a4927371 update with base project 2024-03-28 13:10:53 +01:00
Alexis Gousseau
8a098a39ed add widget professions 2024-03-28 11:55:18 +01:00
Alexis Gousseau
9b1757f0bf add recruitment page 2024-03-28 10:32:03 +01:00
Noah Lancien
63aba8035a Added some partials cards 2024-03-27 16:43:53 +01:00
Jérémy Munsch
e0245951b6
Merge branch 'develop' into trunk 2024-03-25 11:39:22 +01:00
Jérémy Munsch
0f13826a1f
Merge sans review
Merge remote-tracking branch 'origin/wording' into develop
2024-03-25 11:38:24 +01:00
Alexis Gousseau
a26a14bf3e fix wording - #58 2024-03-22 16:56:06 +01:00
Jérémy Munsch
b4b6a7cedc
menu links font size 2024-02-23 17:34:37 +01:00
Jérémy Munsch
b30180aaa2
Offcavas mobile menu partial layout ok 2024-02-23 17:29:23 +01:00
Jérémy Munsch
844bca4eab
saerch btn-group for btn-checkboxes 2024-02-23 15:59:16 +01:00
Jérémy Munsch
01be5c11b0
search pannel fix 2024-02-23 15:57:40 +01:00
Jérémy Munsch
9af1ad05a2
fix bottom-links confusion and a11y color 2024-02-23 15:50:56 +01:00
Jérémy Munsch
0e711f545b
offcanvas fix search id 2024-02-23 15:46:09 +01:00
Jérémy Munsch
3491da79dd
footer text-shadow adjustement 2024-02-23 15:45:47 +01:00
Jérémy Munsch
56d1896165
Fix menu hamburger color 2024-02-23 14:58:22 +01:00
Jérémy Munsch
80df2c7477
footer text-shadow 2024-02-23 14:56:49 +01:00
Jérémy Munsch
fea071239d
footer layout ok 2024-02-23 14:36:01 +01:00
Jérémy Munsch
eccb8a4bb1
sticky-top menu 2024-02-23 11:55:07 +01:00
Jérémy Munsch
521a9d2d0c
btn social fix + add footer mobile text 2024-02-23 11:30:49 +01:00
Jérémy Munsch
81deeb571d
club btn fix 2024-02-23 10:58:07 +01:00
Jérémy Munsch
d9952d56e2
add checkbox pins 2024-02-23 10:54:36 +01:00
Jérémy Munsch
e9ca0c3211
fix layout search input 2024-02-23 09:59:03 +01:00
Jérémy Munsch
337ad8c030
set flex layout 2024-02-23 09:47:01 +01:00
Jérémy Munsch
617f4ff6e5
Body colors fix 2024-02-22 18:38:08 +01:00
Jérémy Munsch
725dd3770b
No radius BS 2024-02-22 18:35:18 +01:00
Jérémy Munsch
f25e876901
Buttons ok + fixed body tertiary 2024-02-22 18:31:48 +01:00
Jérémy Munsch
23ffd0aa54
update modal btn on bs-demo 2024-02-22 18:22:45 +01:00
Jérémy Munsch
43537b59fa
Some BS config OK 2024-02-22 16:33:53 +01:00
Jérémy Munsch
a2b2367ee6
fix bsdemo page 2024-02-22 15:39:58 +01:00
Jérémy Munsch
de5dfe235e
Navbar phone partial OK 2024-02-22 13:58:42 +01:00
Jérémy Munsch
d18a64a3f2
foocanvas search semantic fix 2024-02-22 11:16:22 +01:00
Jérémy Munsch
c706feea57
search offcanvas 2024-02-22 11:00:44 +01:00
Jérémy Munsch
0be9786e46
club btn pill notifications counter 2024-02-21 16:41:07 +01:00
Jérémy Munsch
392c6de0cf
header locals fonts 2024-02-21 16:36:50 +01:00
Jérémy Munsch
ff56761c58
Header fix + default font vars setup 2024-02-21 16:32:11 +01:00
Jérémy Munsch
a4f7c600dd
remove unused wrong SVG 2024-02-21 15:49:58 +01:00
Jérémy Munsch
b47fb53c48
Fix favicon wrong place 2024-02-21 15:47:59 +01:00
Jérémy Munsch
fac0425534
Part Header OK 2024-02-21 15:20:17 +01:00
Jérémy Munsch
67ebdfe475
Fix tree shaking trigger for vite 2024-02-21 12:34:28 +01:00
Jérémy Munsch
1c0aeabf5b
update manifest for 8.3 2024-02-21 11:43:53 +01:00
Jérémy Munsch
25103ff8f7
add a11y bs polyfills 2024-02-21 10:49:20 +01:00
Jérémy Munsch
0a530c099d
Reintroduce previously removed settings 2024-02-21 10:01:08 +01:00
Jérémy Munsch
f170e3c302
Fav icons part footer and header 2024-02-20 16:10:57 +01:00
Jérémy Munsch
dc4db1d9f9
Bump latest base project evos 2024-02-20 10:40:31 +01:00
Jérémy Munsch
ebd8560ab2
update activityLog model 2024-02-09 17:30:30 +01:00
Jérémy Munsch
3e584d1c4f
Ajout favicon deguelasse + setup logo 2024-02-09 17:21:31 +01:00
Jérémy Munsch
2fc0f95b68
add fonts 2024-02-09 17:03:06 +01:00
Jérémy Munsch
4792caeabe
Bump with base project last 2024-02-09 15:20:52 +01:00
Jérémy Munsch
493a76af2d
Update ignore to match LG requirements 2024-02-09 12:36:11 +01:00
Vincent BRIDIER
d69f9bfcd1 Merge branch 'remove-forgotten-dd' into 'develop'
remove de DD sauvages

See merge request ldc-web/projets/le-gaulois!79
2024-01-31 16:02:53 +00:00
Alexis Gousseau
b057b366f1 add docker file 2024-01-30 11:00:31 +01:00
Alexis Gousseau
ce3eea84b1 mutualize the script to submit form from button clone 2024-01-30 10:59:17 +01:00
Alexis Gousseau
66e6935e42 add phpstan and fix all errors 2024-01-30 10:58:39 +01:00
Jérémy Munsch
4cd31e0105
remove de DD sauvages 2024-01-29 12:00:39 +01:00
Alexis Gousseau
73f7215951 update layout for multiple CRUD - issue #52 2024-01-16 15:52:57 +01:00
Alexis Gousseau
f790757bcf init laravel 10 2024-01-10 14:49:46 +01:00
Vincent BRIDIER
a5871d1d2a
Merge branch 'develop' into trunk 2024-01-10 10:13:23 +01:00
Vincent BRIDIER
30c4a85ea5
Merge remote-tracking branch 'origin/issue-51' into develop 2024-01-10 10:03:35 +01:00
Vincent BRIDIER
e76d0a7dea
Add force to static pages migration seeder 2024-01-10 10:02:19 +01:00
Vincent BRIDIER
0b4094c7a2 Merge branch 'ts-1482' into 'develop'
fix background img for club and homepage

See merge request ldc-web/projets/le-gaulois!77
2024-01-09 15:35:24 +00:00
Vincent BRIDIER
ba8ba1161e Merge branch 'issue-49' into 'develop'
Updated cookie-notice to 3.1.2

See merge request ldc-web/projets/le-gaulois!76
2024-01-09 15:21:19 +00:00
Vincent BRIDIER
3d4c48b891 Merge branch 'issue-45' into 'develop'
Closes #45 Add static pages

See merge request ldc-web/projets/le-gaulois!75
2024-01-09 15:20:18 +00:00
Jérémy Munsch
9c680b3fa9 Closes #45 Add static pages 2024-01-09 15:20:18 +00:00
Vincent BRIDIER
07ed551fcf Merge branch 'issue-46' into 'develop'
Issue 46

See merge request ldc-web/projets/le-gaulois!74
2024-01-09 14:42:57 +00:00
sebastien.hattry
78efe378fc Close #46 2024-01-09 14:42:57 +00:00
Jérémy Munsch
2f5f23f97d
Change logo gamme vegetal Closes #51 2023-12-26 10:14:11 +01:00
Nicolas Demangeat
0ab170c68e fix background img for club and homepage 2023-11-30 15:37:15 +01:00
Noah Lancien
8e4cf538ee Updated cookie-notice to 3.1.2 2023-11-29 11:21:02 +01:00
Vincent BRIDIER
1011cb9f7c
Merge branch 'develop' into trunk 2023-11-13 12:29:36 +01:00
Vincent BRIDIER
bcbf47bced Merge branch 'issue-44' into 'develop'
Fixed actu card display

See merge request ldc-web/projets/le-gaulois!73
2023-11-13 11:29:10 +00:00
Noah Lancien
e2e70fd6a8 Fixed actu card display 2023-11-10 15:29:02 +01:00
Vincent BRIDIER
2554a9e826
Merge branch 'develop' into trunk 2023-11-06 10:31:39 +01:00
Vincent BRIDIER
bfd2998195 Merge branch 'issue-43' into 'develop'
Fixes #43

See merge request ldc-web/projets/le-gaulois!72
2023-11-06 09:29:43 +00:00
Vincent BRIDIER
7d1ac4b10d Merge branch 'issue-42' into 'develop'
Closes #42

See merge request ldc-web/projets/le-gaulois!71
2023-11-06 09:28:54 +00:00
Vincent BRIDIER
7a7abd7abd Merge branch 'issue-41' into 'develop'
Closes #41

See merge request ldc-web/projets/le-gaulois!70
2023-11-06 09:27:36 +00:00
Vincent BRIDIER
5c67d50c84 Fix #17 2023-11-03 15:21:59 +00:00
Jérémy Munsch
fe003dfc1e
Fixes #43
publishedBreedingPage route bind should use previous param
2023-10-23 16:04:10 +02:00
Jérémy Munsch
03f97cafbd
Closes #42
Reword on OCB banner "Le Gaulois s’engage avec des poulets'"
2023-10-11 16:05:57 +02:00
Jérémy Munsch
7535eab33e
Closes #41
Club.index Put same promo banner as on homepage
2023-10-11 16:01:31 +02:00
Jérémy Munsch
9446376976
Npm update 2023-10-11 15:14:33 +02:00
Vincent BRIDIER
672207c95a
Merge branch 'develop' into trunk 2023-10-09 17:36:02 +02:00
Vincent BRIDIER
95eb6ade28
Fix error on RedirectPermanent for OCB poultry 2023-10-09 17:35:52 +02:00
Vincent BRIDIER
59adb0ec3f
Merge branch 'develop' into trunk 2023-10-09 17:23:22 +02:00
Vincent BRIDIER
4790243ad0
Composer update for php7.3 2023-10-09 17:23:09 +02:00
Vincent BRIDIER
e24695888c
Merge branch 'develop' into trunk 2023-10-09 17:10:14 +02:00
Vincent BRIDIER
e8b1d54170 Merge branch '40-ts-1727' into 'develop'
add turkey fo + bo

See merge request ldc-web/projets/le-gaulois!69
2023-10-09 15:08:17 +00:00
nicolas.demangeat
0e2cddfdc7 Close #40 - Separate OCB Chicken and Turkey 2023-10-09 15:08:17 +00:00
Vincent BRIDIER
b1414fd9eb Merge branch 'issue-39' into 'develop'
Closes #39 Send Orders as Email to arcadia and keep generated files

See merge request ldc-web/projets/le-gaulois!68
2023-10-09 14:58:30 +00:00
Vincent BRIDIER
4436305b11 Merge branch 'issue-36' into 'develop'
Issue #36 Add new sitemap-generator package

See merge request ldc-web/projets/le-gaulois!67
2023-10-09 14:26:18 +00:00
Jérémy Munsch
9b4af94e73
Closes #39 Send Orders as Email to arcadia and keep generated files
-  clean files after one month
- Dispatch emails as database jobs (retry on fail)
- add command to trigger cleanup of old xml files
2023-09-18 18:17:00 +02:00
Jérémy Munsch
c98086f64d
Rename ARCHADIA to ARCADIA (except in migrations don do that !) 2023-09-15 14:19:10 +02:00
Jérémy Munsch
87be064697
Remove unused config file legacy 2023-09-15 14:07:34 +02:00
Jérémy Munsch
a629d2e3f4
BoutiqueController phpcs fix without refactoring 2023-09-15 12:20:09 +02:00
Jérémy Munsch
943efdc4de
Fix axios not picking csrf token 2023-09-15 12:06:42 +02:00
Jérémy Munsch
08b5e6d0c0
Remove kwaadpepper/refresh-sitemap 2023-08-11 16:33:25 +02:00
Jérémy Munsch
b0a2fdd578
Add new sitemap system without JS 2023-08-11 16:32:44 +02:00
Jérémy Munsch
5b62c3ff73
Composer update for security audit fix 2023-08-11 14:55:50 +02:00
Jérémy Munsch
be49a5f0ce
Npm audit fix 2023-08-11 14:54:23 +02:00
Vincent BRIDIER
495c23de53
Merge branch 'develop' into trunk 2023-08-09 10:21:25 +02:00
Vincent BRIDIER
18e7915ff9 Merge branch 'issue-35' into 'develop'
Fixes #35 add manually htaccess 301 redictions

See merge request ldc-web/projets/le-gaulois!66
2023-08-09 08:20:53 +00:00
Jérémy Munsch
5455353bb8
Fixes #35 add manually htaccess 301 redictions 2023-08-08 17:33:29 +02:00
Vincent BRIDIER
f3bbecdc4b
Merge branch 'develop' into trunk 2023-08-08 12:54:02 +02:00
Vincent BRIDIER
ec2e61d60a Merge branch 'issue-17' into 'develop'
fix wording - issue #17

See merge request ldc-web/projets/le-gaulois!65
2023-08-08 10:49:13 +00:00
Vincent BRIDIER
c7da5bdb93 Merge branch '33-opinsta' into 'develop'
Resolve "OpInsta"

See merge request ldc-web/projets/le-gaulois!64
2023-08-08 10:34:05 +00:00
Alexis Gousseau
327e9111cb fix wording - issue #17 2023-08-02 10:55:23 +02:00
Nicolas Demangeat
d3046c0b9e update OpInstaController 2023-07-19 13:21:57 +00:00
Vincent BRIDIER
508c1f3993
Merge branch 'develop' into trunk 2023-07-11 15:17:18 +02:00
Vincent BRIDIER
a1e73aefc0
Remove GA 2023-07-11 15:16:22 +02:00
Vincent BRIDIER
dd9c53683d Merge branch 'issue-23' into 'develop'
fix responsive product page - issue #23

Closes #23

See merge request ldc-web/projets/le-gaulois!62
2023-07-11 12:54:18 +00:00
Vincent BRIDIER
a825e627cd Merge branch 'issue-22' into 'develop'
remove fallback on recaptcha cookie - issue #22

Closes #22

See merge request ldc-web/projets/le-gaulois!63
2023-06-29 08:54:47 +00:00
Alexis Gousseau
049191de55 remove fallback on recaptcha cookie - issue #22 2023-06-29 10:41:38 +02:00
Alexis Gousseau
12fee4adcd fix responsive product page - issue #23 2023-06-29 10:35:27 +02:00
Vincent BRIDIER
902291c67f
Merge branch 'develop' into trunk 2023-06-29 10:04:41 +02:00
Vincent BRIDIER
f032bff8d4 Merge branch 'ts-1477' into 'develop'
update paginator first page - ts-1477 (#21)

Closes #21

See merge request ldc-web/projets/le-gaulois!61
2023-06-29 08:01:40 +00:00
Alexis Gousseau
0a9c5c1ad9 update paginator first page - ts-1477 (#21) 2023-06-29 08:01:40 +00:00
Vincent BRIDIER
256dc55098 Merge branch 'ts-1474' into 'develop'
add canonical url to ocb breeders page with pagination - ts-1474 (#20)

Closes #20

See merge request ldc-web/projets/le-gaulois!60
2023-06-29 07:41:55 +00:00
Alexis Gousseau
d2848d6277 add canonical url to ocb breeders page with pagination - ts-1474 (#20) 2023-06-29 07:41:55 +00:00
3140 changed files with 307677 additions and 151684 deletions

13
.browserslistrc Normal file
View file

@ -0,0 +1,13 @@
# Browsers that we support
# https://github.com/browserslist/browserslist#readme
>= 0.5%
last 2 major versions
not dead
Chrome >= 60
Firefox >= 60
Firefox ESR
iOS >= 12
Safari >= 12
not Explorer <= 11

2
.dockerignore Normal file
View file

@ -0,0 +1,2 @@
.git
*.md

View file

@ -3,9 +3,9 @@ root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
@ -13,3 +13,9 @@ trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
[docker-compose.yml]
indent_size = 4
[*.vue]
indent_size = 2

View file

@ -1,100 +1,70 @@
### APPLICATION
APP_NAME="Le Gaulois"
APP_KEY=
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=
APP_URL=http://localhost
## LOG LEVEL
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
## DATABASE
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
## DATABASE MIGRATION
DB_DATABASE_2016=legaulois2016
DB_USERNAME_2016=
DB_PASSWORD_2016=
## DATABASE OPINSTA
DB_DATABASE_OPINSTA=
DB_USERNAME_OPINSTA=
DB_PASSWORD_OPINSTA=
DB_HOST_OPINSTA=
DB_PORT_OPINSTA=
## MIGRATION
MIGRATIONPAGINATION=20000
## OTHERS
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=database
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
## MAIL
MAIL_MAILER=smtp
MAIL_HOST=
MAIL_PORT=
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=
MAIL_FROM_ADDRESS=no-reply@legaulois.fr
MAIL_FROM_NAME="Contact Le Gaulois (legaulois.fr)"
MEMCACHED_HOST=127.0.0.1
## MAIL ADDRESSES
MAIL_LIST_CONTACT=contact@legaulois.fr
MAIL_LIST_PASSERELLE=passerelle.ldc@ldc.fr
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
# Sentry
SENTRY_LARAVEL_DSN=
## ARCHADIA
BOUTIQUE_ARCHADIA_OP_CODE=16
## CRM
# CRM
CRM_ENDPOINT=
CRM_API_TOKEN=
CRM_TOKEN=
CRM_PASSWORD=
CRM_QUESTION_ID=
## MES BR
MESBR_ENDPOINT=
# DIGITAL RECRUITER
DIGITAL_RECRUITER_URL=
# ADMIN SECURE
# - API ENDPOINT (Optional)
LDC_WEB_API_ENDPOINT="https://ldc-web.ldc.fr/api/ldc-networks"
# - API KEY
LDC_WEB_API_KEY=""
# - LIST SEPARATED WITH ',' (Optional)
LDC_WEB_CIDR_MANUAL_ALLOWED_LIST=""
#MESBR
MESBR_REF_SITE=
MESBR_REF_CAMP=
MESBR_ENDPOINT=
## OP BR CHARCUT
MESBR_REF_SITE_CHARCUT=
MESBR_REF_CAMP_CHARCUT=
MESBR_COUPON_1_CHARCUT=""
MESBR_COUPON_2_CHARCUT=""
MESBR_COUPON_3_CHARCUT=""
## GOOGLE
ANALYTICS_GOOGLE_ID=
GOOGLE_MAP_API_KEY=
# Google Recaptcha
GOOGLE_RECAPTCHA_PUBLIC=
GOOGLE_RECAPTCHA_PRIVATE=
GOOGLE_RECAPTCHA_VERSION=
# Matomo
MATOMO_SITE_ID=
## MERCANET
MERCANET_SECRET=
MERCANET_MERCHAND_ID=
MERCANET_ENV=
# BYPASS THE CRM JUST LOGIN (needs debug mode)
NOCRM=false
#OP INSTA
## Démarre le à d-m-YYYY
OPINSTA_START=
## Fin le à d-m-YYYY
OPINSTA_END=
# SAML
SAML2_DEFAULT_TENANT_UUID=
SAML2_SP_CERT_x509=
SAML2_SP_CERT_PRIVATEKEY=
SAML2_CONTACT_TECHNICAL_EMAIL=
SAML2_CONTACT_SUPPORT_EMAIL=

62
.eslintrc.json Normal file
View file

@ -0,0 +1,62 @@
{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"eslint:recommended",
"plugin:vue/vue3-strongly-recommended",
"@vue/eslint-config-typescript"
],
"overrides": [
{
"files": ["*.ts", "*.vue"],
"rules": {
"no-undef": "off"
}
},
{
"files": ["*.vue"],
"rules": {
"indent": "off"
}
}
],
"parser": "vue-eslint-parser",
"parserOptions": {
"parser": "@typescript-eslint/parser",
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": ["vue", "@typescript-eslint"],
"ignorePatterns": [
"webpack.mix.js",
"**/*.php",
"**/*.svg",
"**/vendor/*.js",
"**/vendor/**/*.js",
"**/vendor/**/*.scss"
],
"rules": {
"indent": ["error", 4, { "SwitchCase": 1 }],
"linebreak-style": ["error", "unix"],
"quotes": ["error", "double"],
"semi": ["error", "always"],
"vue/script-indent": ["error", 2, { "baseIndent": 0, "switchCase": 1 }],
"vue/one-component-per-file": "off"
},
"settings": {
"import/resolver": {
"node": {
"extensions": [".js", ".vue", ".ts", ".d.ts"]
},
"alias": {
"extensions": [".vue", ".js", ".ts", ".scss", ".d.ts"],
"map": [
["~", "./resources/assets"],
["@", "./node_modules"]
]
}
}
}
}

14
.gitattributes vendored
View file

@ -1,5 +1,11 @@
* text=auto
*.css linguist-vendored
*.scss linguist-vendored
*.js linguist-vendored
* text=auto eol=lf
*.blade.php diff=html
*.css diff=css
*.html diff=html
*.md diff=markdown
*.php diff=php
/.github export-ignore
CHANGELOG.md export-ignore
.styleci.yml export-ignore

73
.gitignore vendored
View file

@ -1,32 +1,55 @@
/node_modules
/public/hot
/public/storage/*
/public/images/*
/public/js/*
/public/css/*
/public/fonts/*
/public/uploads/*
/public/assets/*
/public/cache/*
/public/storage
/public/sitemap.xml
/storage/*.key
/storage/inco/*.*
/storage/eleveur/*.*
/storage/app/public/*.*
/storage/debugbar
/vendor
.env
.env.backup
.env.production
.phpunit.result.cache
.stylelintcache
/.fleet
/.idea
/.phpunit.cache
/.vscode
/node_modules
/bootstrap
/public/build
/public/cache
/public/hot
/public/sitemap.xml
/public/storage
/storage/*.key
/vendor
auth.json
docker-compose.override.yml
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
.idea/
.vscode/
mix-manifest.json
workspace.code-workspace
storage/crm_migration.csv
auth.json
.npmrc
.npmrc
# Ignore public favicon
/public/android-chrome-192x192.png
/public/android-chrome-512x512.png
/public/apple-touch-icon.png
/public/browserconfig.xml
/public/browserconfig.xml
/public/favicon-16x16.png
/public/favicon-32x32.png
/public/favicon.ico
/public/mstile-150x150.png
/public/safari-pinned-tab.svg
/public/site.webmanifest
# Ignore Storage Arcadia (orders)
storage/Arcadia
# Ignore Storage Inco (images)
storage/inco
# Ignore Storage tracabilite (eleveurs, lots, miseenplace)
storage/tracabilite
# For new LG version ignore old assets
oldAssets
public
NEWS
newsletters

View file

@ -1,11 +1,23 @@
include:
- project: 'ldc-web/shared-ci'
ref: 'main'
file: 'lint/lint7.3.yml'
- project: 'ldc-web/shared-ci'
ref: 'main'
file: 'security/security7.3.yml'
- project: "ldc-web/shared-ci"
ref: "main"
file: "lint/lint.yml"
- project: "ldc-web/shared-ci"
ref: "main"
file: "security/security.yml"
- project: "ldc-web/shared-ci"
ref: "main"
file: "build/build.yml"
- project: "ldc-web/shared-ci"
ref: "main"
file: "test/test.yml"
- project: "ldc-web/shared-ci"
ref: "main"
file: "deploy/deploy.yml"
stages:
- lint
- security
- lint
- security
- build
- test
- deploy

View file

@ -1,13 +0,0 @@
php:
preset: laravel
disabled:
- unused_use
finder:
not-name:
- index.php
- server.php
js:
finder:
not-name:
- webpack.mix.js
css: true

45
.stylelintrc.json Normal file
View file

@ -0,0 +1,45 @@
{
"extends": [
"stylelint-config-standard-scss",
"stylelint-config-sass-guidelines",
"stylelint-config-idiomatic-order"
],
"plugins": [
"stylelint-scss"
],
"files": [
"**/*.css",
"**/*.scss"
],
"ignoreFiles": [
"**/vendor/*.css",
"**/vendor/**/*.css",
"**/vendor/*.scss",
"**/vendor/**/*.scss",
"**/vendor/*.sass",
"**/vendor/**/*.sass",
"**/vendor/*.less",
"**/vendor/**/*.less"
],
"customSyntax": "postcss-scss",
"rules": {
"declaration-property-value-no-unknown": true,
"selector-max-id": null,
"color-no-invalid-hex": true,
"order/properties-alphabetical-order": null,
"max-nesting-depth": 5,
"selector-max-compound-selectors": 5,
"declaration-colon-newline-after": null,
"value-list-comma-newline-after": null,
"scss/double-slash-comment-empty-line-before": [
"always",
{
"ignore": [
"between-comments",
"stylelint-commands",
"inside-block"
]
}
]
}
}

View file

@ -1,13 +1,14 @@
{
"phpcs.executablePath": "vendor/bin/phpcs",
"workbench.colorCustomizations": {
"activityBar.activeBackground": "#145bac",
"activityBar.activeBorder": "#eb549a",
"activityBar.activeBackground": "#145bac",
"activityBar.background": "#145bac",
"activityBar.foreground": "#e7e7e7",
"activityBar.inactiveForeground": "#e7e7e799",
"activityBarBadge.background": "#eb549a",
"activityBarBadge.foreground": "#15202b",
"commandCenter.border": "#e7e7e799",
"sash.hoverBorder": "#145bac",
"statusBar.background": "#0f437e",
"statusBar.foreground": "#e7e7e7",
@ -17,8 +18,7 @@
"titleBar.activeBackground": "#0f437e",
"titleBar.activeForeground": "#e7e7e7",
"titleBar.inactiveBackground": "#0f437e99",
"titleBar.inactiveForeground": "#e7e7e799",
"commandCenter.border": "#e7e7e799"
"titleBar.inactiveForeground": "#e7e7e799"
},
"peacock.remoteColor": "#0f437e"
}

5
Dockerfile Normal file
View file

@ -0,0 +1,5 @@
FROM registry.s-web.fr/ldc-web/projets/ldc-web-images-docker/ldcweb-production-8.3:latest
COPY --chown=www-data:www-data . /app/srcs
USER root
RUN chmod -R 755 /app/srcs/storage
USER www-data

View file

@ -1,33 +1,23 @@
# Le Gaulois
## .env
En DEV et PROD mettre :
```
LOG_CHANNEL=stackProd
```
## Optimiser Images
## Flux
Flux INCO dans :
```
storage/inco
```
Flux Tracabilité dans :
```
storage/tracabilite
```
### PNG
## Scheduled Jobs
- DeleteOrders : daily at 14
apt install imagick
convert -colors 256 -depth 8 +dither bg-footer-ori.png bg-footer-test.png
<https://compresspng.com/>
## Boutique
Expédition de fond de carte magnétique
Poids : 540
Code Opération : 16
Code Support : 1
### Autre
apt install trimage
### TODO
FIXME: supprimer le dossier resources/assets/images/tmp
# Copy paste from the admin secure readme.md
Put every min in PROD :
php artisan schedule:run
Expédition de fond de carte papier
Poids : 0
Code Opération : 16
Code Support : 0
- !! Vérifier que sell_items.archadia_id contient bien la bone valeur (Code support)

View file

@ -0,0 +1,182 @@
<?php
namespace App\Auth;
use App\Models\Customer;
use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Contracts\Auth\UserProvider;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Str;
use LDC\LDCCRM\Enums\ApiError;
use LDC\LDCCRM\Exceptions\ApiErrorException;
use LDC\LDCCRM\Exceptions\CrmException;
use LDC\LDCCRM\Models\Customer as CrmCustomer;
/**
* Crm user provider to integrate nicely with Laravel
*/
class CrmUserProvider extends EloquentUserProvider implements UserProvider
{
/**
* The model to use, specified in auth config guard.
*
* @var string
*/
private $usedModel = Customer::class;
/**
* Retrieve a user by the given credentials.
*
* @param array $credentials
* @return \Illuminate\Contracts\Auth\Authenticatable|null
*/
public function retrieveByCredentials(array $credentials): \Illuminate\Contracts\Auth\Authenticatable|null
{
// * Let laravel find a model
$model = parent::retrieveByCredentials($credentials) ?? self::retrieveTrashed($credentials);
try {
/** @var \LDC\LDCCRM\CrmApiV4 */
$crm = app('crmAPI');
// Si pas de compte local.
if (!$model) {
$crmCustomer = $crm->getCustomer($credentials['email']);
if (!$crmCustomer) {
// * Customer is not found on CRM.
return null;
}
$model = $this->createLocalCustomer($crmCustomer);
}
return $model;
} catch (ApiErrorException $e) {
// * Customer is not found.
if ($e->getApiError()->equals(ApiError::modelNotFound)) {
return null;
}
report($e);
Log::error('Unhandled response ' . $e->getApiError()->label());
} catch (CrmException | \Exception $e) {
report($e);
// Une erreur critique est survenue avec la CRM.
return null;
} //end try
Log::error(__CLASS__ . '::retrieveByCredentials reached end of possibilities.');
return null;
}
/**
* Validate a user against the given credentials.
*
* @param \Illuminate\Contracts\Auth\Authenticatable $model
* @param array $credentials
* @return boolean
* @throws \RuntimeException If model provided is not a Customer or connection to server fails.
* @throws \LDC\LDCCRM\Exceptions\CrmException On CRM call error.
* @throws \Exception On CRM call error.
*/
public function validateCredentials(Authenticatable $model, array $credentials): bool
{
/** @var \Illuminate\Database\Eloquent\Model $model */
if (\get_class($model) !== $this->usedModel) {
throw new \RuntimeException('Cannot authenticate any thing else than ' . $this->usedModel);
}
try {
/** @var \LDC\LDCCRM\CrmApiV4 */
$crm = app('crmAPI');
// * If has trait soft delete and customer trashed, then restore customer.
if (
\in_array(\Illuminate\Database\Eloquent\SoftDeletes::class, \class_uses_recursive($model)) and
// @phpstan-ignore-next-line
$model->trashed()
) {
// @phpstan-ignore-next-line
$model->restore();
}
// * Ne devrait pas survenir, $crm->login throws ApiError::authFailed
return $crm->login($credentials['email'], $credentials['password']);
} catch (ApiErrorException $e) {
// @phpstan-ignore-next-line
if (!$model->hashcode or !CrmCustomer::find($model->hashcode)) {
$model->forceDelete();
return false;
}
if ($e->getApiError()->equals(ApiError::authFailed)) {
return false;
}
// ! Assert Authenticable model must be valided (MustValidate trait).
if ($e->getApiError()->equals(ApiError::customerNotActivated)) {
Session::flash('warning', \trans('Vous devez activer votre compte'));
return true;
}
} catch (CrmException | \Exception $e) {
report($e);
if (config('app.debug')) {
throw $e;
}
return false;
} //end try
Log::error(__CLASS__ . '::validateCredentials reached end of possibilities.');
return false;
}
/**
* Create a local customer
*
* @param \LDC\LDCCRM\Models\Customer $crmCustomer
* @return \Illuminate\Database\Eloquent\Model
* @throws \Throwable If saving to DB failed.
*/
private function createLocalCustomer(\LDC\LDCCRM\Models\Customer $crmCustomer): \Illuminate\Database\Eloquent\Model
{
/** @var \Illuminate\Database\Eloquent\Model $model */
$model = $this->usedModel::firstOrNew([
'email' => $crmCustomer->email
]);
// @phpstan-ignore-next-line
$model->hashcode = $crmCustomer->hashcode;
// @phpstan-ignore-next-line
$model->email_verified_at = $crmCustomer->status ? now() : null;
$model->saveOrFail();
return $model;
}
/**
* Retrieve a trashed customer by the given credentials.
*
* @param array $credentials
* @return \Illuminate\Contracts\Auth\Authenticatable|null
* @throws \ErrorException If cannot connect to LDAP.
*/
private function retrieveTrashed(array $credentials): ?\Illuminate\Contracts\Auth\Authenticatable
{
// * Make changes
if (empty($credentials)) {
return null;
}
// First we will add each credential element to the query as a where clause.
// Then we can execute the query and, if we found a customer, return it in a
// Eloquent User "model" that will be utilized by the Guard instances.
$query = $this->createModel()->newQuery();
foreach ($credentials as $key => $value) {
if (!Str::contains($key, 'password')) {
$query->where($key, $value);
}
}
// @phpstan-ignore-next-line
return $query->withTrashed()->first();
}
}

View file

@ -0,0 +1,72 @@
<?php
namespace App\Auth;
use App\Models\Customer;
use Illuminate\Support\Str;
use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Contracts\Auth\UserProvider;
/**
* Overload EloquentUserProvider to handle
* Soft deleted Customers
*/
class ReactivateCustomerProvider extends EloquentUserProvider implements UserProvider
{
/**
* Retrieve a customer by the given credentials.
*
* @param array $credentials
* @return \Illuminate\Contracts\Auth\Authenticatable|null
* @throws \ErrorException If cannot connect to LDAP.
*/
public function retrieveByCredentials(array $credentials): ?\Illuminate\Contracts\Auth\Authenticatable
{
// * Make changes
if (empty($credentials)) {
return null;
}
// First we will add each credential element to the query as a where clause.
// Then we can execute the query and, if we found a customer, return it in a
// Eloquent User "model" that will be utilized by the Guard instances.
$query = $this->createModel()->newQuery();
foreach ($credentials as $key => $value) {
if (!Str::contains($key, 'password')) {
$query->where($key, $value);
}
}
// @phpstan-ignore-next-line
return $query->withTrashed()->first();
}
/**
* Validate a customer against the given credentials.
*
* @param \Illuminate\Contracts\Auth\Authenticatable $customer
* @param array $credentials
* @return boolean
* @throws \ErrorException If model provided is not a Customer or connection to server fails.
*/
public function validateCredentials(Authenticatable $customer, array $credentials): bool
{
/** @var \App\Models\Customer $customer */
if ($customer instanceof Customer) {
throw new \ErrorException('Cannot authenticate any thing else than ' . Customer::class);
}
// @phpstan-ignore-next-line
$plain = $credentials['password'];
/** @var \App\Models\Customer $customer */
if ($this->hasher->check($plain, $customer->getAuthPassword())) {
// * Restore customer
return boolval($customer->restore());
}
return false;
}
}

View file

@ -3,10 +3,10 @@
namespace App\Casts;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Database\Eloquent\Model;
/**
* Custom cast Html Color
* https://laravel.com/docs/8.x/eloquent-mutators#custom-casts
*/
//phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceAfterLastUsed
//phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceBeforeLastUsed
@ -15,13 +15,13 @@ class HtmlColor implements CastsAttributes
/**
* Cast the given value.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @param string $key
* @param mixed $value
* @param array $attributes
* @param \Illuminate\Database\Eloquent\Model $model
* @param string $key
* @param mixed $value
* @param array $attributes
* @return string
*/
public function get($model, $key, $value, $attributes)
public function get(Model $model, string $key, mixed $value, array $attributes): string
{
return "#" . $this->zeropad(dechex($value), 6);
}
@ -29,18 +29,25 @@ class HtmlColor implements CastsAttributes
/**
* Prepare the given value for storage.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @param string $key
* @param array $value
* @param array $attributes
* @param \Illuminate\Database\Eloquent\Model $model
* @param string $key
* @param mixed $value
* @param array $attributes
* @return integer
*/
public function set($model, $key, $value, $attributes)
public function set(Model $model, string $key, mixed $value, array $attributes): int
{
return \intval(hexdec(ltrim($value, '#')));
}
private function zeropad($num, $lim)
/**
* Pad with zeros a numeric string
*
* @param string $num
* @param integer $lim
* @return string
*/
protected function zeropad(string $num, int $lim): string
{
return (strlen($num) >= $lim) ? $num : $this->zeropad("0" . $num, $lim);
}

View file

@ -3,39 +3,44 @@
namespace App\Casts;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
class NiceDate implements CastsAttributes
{
/**
* Accessor
* Cast the given value.
*
* @param mixed $model
* @param mixed $key
* @param mixed $value
* @param mixed $attributes
* @return mixed
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceBeforeLastUsed
* @param \Illuminate\Database\Eloquent\Model|null $model
* @param string $key
* @param mixed $value
* @param array $attributes
* @return string
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceAfterLastUsed
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceBeforeLastUsed
*/
public function get($model, $key, $value, $attributes)
public function get(Model|null $model, string $key, mixed $value, array $attributes): string
{
// phpcs:enable
$value = Carbon::parse($value);
return $value->isToday() ?
trans('Aujourd\'hui à :time', ['time' => $value->format('H:i')]) : $value->format('Y/m/d H:i');
trans('Aujourd\'hui à :time', ['time' => $value->format('H:i')]) : $value->format('Y/m/d à H:i');
}
/**
* Mutator
* Prepare the given value for storage.
*
* @param mixed $model
* @param mixed $key
* @param mixed $value
* @param mixed $attributes
* @return mixed
* @param \Illuminate\Database\Eloquent\Model $model
* @param string $key
* @param mixed $value
* @param array $attributes
* @return string
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceAfterLastUsed
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceBeforeLastUsed
*/
public function set($model, $key, $value, $attributes)
public function set(Model $model, string $key, mixed $value, array $attributes): string
{
// phpcs:enable
return Carbon::parse($value)->format('Y-m-d H:i:s');
}
}

View file

@ -0,0 +1,34 @@
<?php
namespace App\Console\Commands;
use App\Jobs\FetchDigitalRecruiterOffers;
use Illuminate\Console\Command;
class FetchDigitalRecruiterOffersCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'uwil:digital-recruiter';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Fetch digital recruiter offers';
/**
* Execute the console command.
*
* @return void
*/
public function handle(): void
{
(new FetchDigitalRecruiterOffers())->handle();
$this->info('Offers fetch 👌');
}
}

View file

@ -0,0 +1,34 @@
<?php
namespace App\Console\Commands;
use App\Jobs\FetchMesBr;
use Illuminate\Console\Command;
class FetchMesBrCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'uwil:mesbr';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Fetch mesbr discounts';
/**
* Execute the console command.
*
* @return void
*/
public function handle(): void
{
(new FetchMesBr())->handle();
$this->info('Discounts fetch 👌');
}
}

View file

@ -1,77 +0,0 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
/*
* Command Name: LDC Web Status Checker
* Description: Envoi des infos Serveur/Laravel vers LDC Web
* Version: 1.1
* Author: Vincent BRIDIER
* Author URI: vincent.bridier@ldc.fr
*/
class LdcWebStatusChecker extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'ldcweb:statuschecker';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Envoi des infos Serveur/Laravel vers LDC Web';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$data = [];
$data['uuid'] = config('ldcweb.project_uuid');
// Sitemap.xml ?
if (file_exists(public_path() . '/sitemap.xml')) {
$data['sitemap'] = 'true';
} else {
$data['sitemap'] = 'false';
}
// Robots.txt ?
if (file_exists(public_path() . '/robots.txt')) {
$data['robots'] = 'true';
} else {
$data['robots'] = 'false';
}
// Check logs
$data['logs'] = 0;
$patherror = storage_path('/logs');
$files = glob($patherror . '/*.log');
if (count($files) > 0) {
foreach ($files as $file) {
$data['logs'] = $data['logs'] + filesize($file);
}
}
$data['code']['version'] = app()->version();
// Send by cURL
$url = 'https://ldc-web.ldc.fr/api/status-checker';
$ch = curl_init($url);
$payload = ['token' => 'CE8S52Qq7stf5k8frF4T', 'datas' => json_encode($data)];
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
return 0;
}
}

View file

@ -0,0 +1,39 @@
<?php
namespace App\Console\Commands;
use App\Models\Message;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Crypt;
class MigrateOldMessage extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'app:migrate-old-message';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Execute the console command.
*
* @return void
*/
public function handle()
{
// Comment casting before run this command.
$messages = Message::all();
foreach ($messages as $message) {
$message->setAttribute('message', Crypt::encryptString($message->getRawOriginal('message')));
$message->save();
}
}
}

View file

@ -1,37 +0,0 @@
<?php
namespace App\Console\Commands;
use App\Jobs\PurgeNotifications as JobsPurgeNotifications;
use Illuminate\Console\Command;
//phpcs:disable Generic.Files.LineLength.TooLong
class PurgeNotifications extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'notifications:purge';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Purge the notifications table where the created_at date of a notification is older than 30 days';
/**
* Execute the console command.
*
* @return integer
*/
public function handle()
{
$this->info('Running the Job, this could take some time.');
$job = new JobsPurgeNotifications();
$job->handle();
$this->info('Job completed');
}
}

View file

@ -0,0 +1,36 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Mail;
class TestMail extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'uwil:mail:test';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Send test email to equipe.web@ldc.fr';
/**
* Execute the console command.
*
* @return void
*/
public function handle(): void
{
Mail::raw(sprintf('UWIL mail-test from %s %s', \config('app.name'), \config('app.url')), function ($msg) {
$msg->to('equipe.web@ldc.fr')->subject('Test Email');
});
$this->info('Mail send 👌');
}
}

View file

@ -1,38 +0,0 @@
<?php
namespace App\Console\Commands;
use App\Jobs\UpdateReductions as JobsUpdateReductions;
use Illuminate\Console\Command;
//phpcs:disable Generic.Files.LineLength.TooLong
class UpdateReductions extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'reductions:update';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Update the reductions that the application get from MesBR';
/**
* Execute the console command.
*
* @return integer
*/
public function handle()
{
$this->info('Running the Job, this could take some time.');
$job = new JobsUpdateReductions();
$job->console = $this;
$job->handle();
$this->info('Job completed');
}
}

View file

@ -1,43 +0,0 @@
<?php
namespace App\Console\Commands;
use App\User;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Hash;
class UserChangePassword extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'user:password';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Changes a user password';
public function handle()
{
$email = $this->ask('What is the email?');
$user = User::where('email', $email)->first();
if (!$user) {
$this->error(sprintf('User %s could not be found', $email));
return -1;
}
$password = $this->secret('What is the password?');
$user->password = Hash::make($password);
$user->saveOrFail();
$this->info('User updated.');
return 0;
}
}

View file

@ -2,9 +2,13 @@
namespace App\Console\Commands;
use App\User;
use App\Enums\Users\RoleEnum;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
use Illuminate\Support\Str;
class UserCreate extends Command
{
@ -13,38 +17,189 @@ class UserCreate extends Command
*
* @var string
*/
protected $signature = 'user:create';
protected $signature = 'uwil:user:create';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Create a backend user';
protected $description = 'Create a backend admin user';
/**
* The first name of the new user.
*
* @var string|null
*/
protected $first_name;
/**
* The last name of the new user.
*
* @var string|null
*/
protected $last_name;
/**
* The email of the new user.
*
* @var string|null
*/
protected $email;
/**
* The role of the new user.
*
* @var string|null
*/
protected $role;
/**
* Execute the console command.
*
* @return integer
* @return void
*/
public function handle()
public function handle(): void
{
$firstname = $this->ask('What is the firstname?');
$lastname = $this->ask('What is the lastname?');
$email = $this->ask('What is the email?');
$role = $this->ask('What is the role 1 (SuperAdmin) or 2 (Admin) ?') == '1' ? 1 : 2;
$pwd = $this->secret('What is the password?');
$this->first_name = null;
$this->addFirstName();
$user = new User();
$user->firstname = $firstname;
$user->lastname = $lastname;
$user->email = $email;
$user->role = $role;
$user->password = Hash::make($pwd);
$user->email_verified_at = date('Y-m-d H:i:s');
$this->last_name = null;
$this->addLastName();
$this->email = null;
$this->addEmail();
$this->role = null;
$this->addRole();
$user = new User([
'first_name' => $this->first_name,
'last_name' => $this->last_name,
'email' => $this->email,
'role' => $this->role,
'published' => true,
'published_at' => Carbon::now(),
]);
$user->saveOrFail();
$this->info('User created.');
return 0;
$this->info('User created 👌');
}
/**
* Add a first name to the user.
*
* @return void
*/
private function addFirstName(): void
{
while (is_null($this->first_name)) {
try {
$tmp = $this->ask('Type the wanted user first name', 'Admin');
$validator = Validator::make(['first_name' => $tmp], [
'first_name' => 'required|min:3|max:255'
]);
$validator->validate();
$this->first_name = $tmp;
} catch (ValidationException $e) {
$this->error(sprintf(
'Please provide a valid first name %s',
\implode(',', collect($e->errors())->flatten()->all())
));
continue;
} //end try
}; //end while
}
/**
* Add a last name to the user.
*
* @return void
*/
private function addLastName(): void
{
while (is_null($this->last_name)) {
try {
$tmp = $this->ask('Type the wanted user last name', 'Saïtama');
$validator = Validator::make(['last_name' => $tmp], [
'last_name' => 'required|min:3|max:255'
]);
$validator->validate();
$this->last_name = $tmp;
} catch (ValidationException $e) {
$this->error(sprintf(
'Please provide a valid last_name %s',
\implode(',', collect($e->errors())->flatten()->all())
));
continue;
} //end try
}; //end while
}
/**
* Add an email to the user.
*
* @return void
*/
private function addEmail(): void
{
while (is_null($this->email)) {
try {
$tmp = $this->ask('Type the wanted user email', 'equipe.web@ldc.fr');
$validator = Validator::make(['email' => $tmp], [
'email' => 'required|unique:users,email|email:rfc,dns'
]);
$validator->validate();
$this->email = $tmp;
} catch (ValidationException $e) {
$this->error(sprintf(
'Please provide a valid email %s',
\implode(',', collect($e->errors())->flatten()->all())
));
continue;
} //end try
}; //end while
}
/**
* Add a role to the user.
*
* @return void
*/
private function addRole(): void
{
while (is_null($this->role)) {
try {
$tmp = $this->choice(
'Select his role',
[
Str::ucFirst(RoleEnum::conceptor->label()),
Str::ucFirst(RoleEnum::admin->label()),
Str::ucFirst(RoleEnum::visitor->label())
],
Str::ucFirst(RoleEnum::visitor->label()),
);
if ($tmp === Str::ucFirst(RoleEnum::conceptor->label())) {
$tmp = RoleEnum::conceptor;
}
if ($tmp === Str::ucFirst(RoleEnum::admin->label())) {
$tmp = RoleEnum::admin;
}
if ($tmp === Str::ucFirst(RoleEnum::visitor->label())) {
$tmp = RoleEnum::visitor;
}
$validator = Validator::make(['role' => $tmp], [
'role' => 'required'
]);
$validator->validate();
$this->role = $tmp;
} catch (ValidationException $e) {
$this->error(sprintf(
'Please choose from the selection %s',
\implode(',', collect($e->errors())->flatten()->all())
));
continue;
} //end try
}; //end while
}
}

View file

@ -1,37 +0,0 @@
<?php
namespace App\Console\Commands;
use App\Jobs\XSCVMepReader as JobsXSCVMepReader;
use Illuminate\Console\Command;
class XSCVMepReader extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'csv:mep';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Run the XSCVMepReader manually';
/**
* Execute the console command.
*
* @return integer
*/
public function handle()
{
$this->info('Running the Job, this could take some time.');
$job = new JobsXSCVMepReader();
$job->console = $this;
$job->handle();
$this->info('Job completed');
}
}

View file

@ -1,37 +0,0 @@
<?php
namespace App\Console\Commands;
use App\Jobs\XmlEleveursReader as JobsXmlEleveursReader;
use Illuminate\Console\Command;
class XmlEleveursReader extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'xml:eleveur';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Run the XmlEleveursReaderJob manually';
/**
* Execute the console command.
*
* @return integer
*/
public function handle()
{
$this->info('Running the Job, this could take some time.');
$job = new JobsXmlEleveursReader();
$job->console = $this;
$job->handle();
$this->info('Job completed');
}
}

View file

@ -1,37 +0,0 @@
<?php
namespace App\Console\Commands;
use App\Jobs\XmlIncoReader as JobsXmlIncoReader;
use Illuminate\Console\Command;
class XmlIncoReader extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'xml:inco';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Run the XmlIncoReaderJob manually';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$this->info('Running the Job, this could take some time.');
$job = new JobsXmlIncoReader();
$job->console = $this;
$job->handle();
$this->info('Job completed');
}
}

View file

@ -1,37 +0,0 @@
<?php
namespace App\Console\Commands;
use App\Jobs\XmlTracaReader as JobsXmlTracaReader;
use Illuminate\Console\Command;
class XmlTracaReader extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'xml:traca';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Run the XmlTracaReaderJob manually';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$this->info('Running the Job, this could take some time.');
$job = new JobsXmlTracaReader();
$job->console = $this;
$job->handle();
$this->info('Job completed');
}
}

View file

@ -2,47 +2,14 @@
namespace App\Console;
use App\Console\Commands\LdcWebStatusChecker;
use App\Console\Commands\PurgeNotifications;
use App\Console\Commands\UpdateReductions;
use App\Console\Commands\UserChangePassword;
use App\Console\Commands\UserCreate;
use App\Console\Commands\XmlEleveursReader;
use App\Console\Commands\XmlIncoReader;
use App\Console\Commands\XmlTracaReader;
use App\Console\Commands\XSCVMepReader;
use App\Jobs\DeleteOldMessages;
use App\Jobs\DeleteOldNotifications;
use App\Jobs\DeleteOrders;
use App\Jobs\PurgeNotifications as JobsPurgeNotifications;
use App\Jobs\PurgeOldResetPasswords;
use App\Jobs\UpdateReductions as JobsUpdateReductions;
use App\Jobs\XmlEleveursReader as JobsXmlEleveursReader;
use App\Jobs\XmlIncoReader as JobsXmlIncoReader;
use App\Jobs\XmlTracaReader as JobsXmlTracaReader;
use App\Jobs\XSCVMepReader as JobsXSCVMepReader;
use App\Jobs\FetchDigitalRecruiterOffers;
use App\Jobs\FetchMesBr;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
PurgeNotifications::class,
UpdateReductions::class,
XmlEleveursReader::class,
XmlIncoReader::class,
XmlTracaReader::class,
UserCreate::class,
UserChangePassword::class,
XSCVMepReader::class,
LdcWebStatusChecker::class
];
/**
* Define the application's command schedule.
*
@ -51,19 +18,20 @@ class Kernel extends ConsoleKernel
*/
protected function schedule(Schedule $schedule)
{
// $schedule->job(SendOcbMissingBreederReminder::class)->dailyAt('07:30');
$schedule->job(DeleteOrders::class)->dailyAt('14:00');
$schedule->job(FetchDigitalRecruiterOffers::class)->daily();
$schedule->job(DeleteOldMessages::class)->dailyAt('14:15');
$schedule->job(DeleteOldNotifications::class)->dailyAt('14:30');
$schedule->job(JobsUpdateReductions::class)->dailyAt('14:45');
$schedule->job(JobsXmlIncoReader::class)->name('xml-inco-reader')->dailyAt('15:00');
$schedule->job(JobsXmlTracaReader::class)->name('xml-traca-reader')->dailyAt('15:15');
$schedule->job(JobsXmlEleveursReader::class)->name('xml-eleveurs-reader')->dailyAt('15:30');
$schedule->job(JobsXSCVMepReader::class)->name('csv-mep-reader')->dailyAt('16:00');
$schedule->job(JobsPurgeNotifications::class)->dailyAt('00:15');
$schedule->job(PurgeOldResetPasswords::class)->dailyAt('00:25');
$schedule->job(FetchMesBr::class)->daily();
}
// * Remove Old traca
$schedule->command('xml:clean_olds')->dailyAt('06:00');
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__ . '/Commands');
require base_path('routes/console.php');
}
}

View file

@ -0,0 +1,48 @@
<?php
namespace App\Enums\ActivityLogs;
use App\Traits\Enums\BaseEnum;
enum ActivityLogsEventEnum: int
{
use BaseEnum;
case created = 1;
case updated = 2;
case duplicated = 3;
case deleted = 4;
/**
* Optionnal labels definition
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::created->name => 'Création',
self::updated->name => 'Mise à jour',
self::duplicated->name => 'Duplication',
self::deleted->name => 'Suppression',
];
/**
* Custom added classes definition
*/
private const BOOTSTRAPCLASS = [
self::created->name => 'success',
self::updated->name => 'warning',
self::duplicated->name => 'secondary',
self::deleted->name => 'danger',
];
/**
* Get Class
*
* @return string
*/
public function bootstrapClass(): string
{
return self::BOOTSTRAPCLASS[$this->name];
}
}

View file

@ -0,0 +1,23 @@
<?php
namespace App\Enums\Approaches;
use App\Traits\Enums\BaseEnum;
enum ApproachTypeEnum: int
{
use BaseEnum;
case label = 1;
case demarche = 2;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::label->name => 'validation.custom.label',
self::demarche->name => 'validation.custom.demarche',
];
}

View file

@ -1,31 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self actu()
* @method static self jeux()
* @method static self video()
* @method static self sondage()
* @method static self astuce()
*/
final class ArticleCategory extends BaseEnumRoutable
{
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'actu' => __('Actus'),
'jeux' => __('Jeux-Concours'),
'video' => __('Vidéo'),
'sondage' => __('Sondage'),
'astuce' => __('Astuces')
];
}
}

View file

@ -0,0 +1,27 @@
<?php
namespace App\Enums\Breeders;
use App\Traits\Enums\BaseEnum;
enum EleveurOcbStatus: int
{
use BaseEnum;
case none = 0;
case pending = 1;
case no = 2;
case yes = 3;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::none->name => trans('Non'),
self::pending->name => trans('En attente'),
self::no->name => trans('Réfusé'),
self::yes->name => trans('Valide'),
];
}

View file

@ -0,0 +1,23 @@
<?php
namespace App\Enums\Breeders;
use App\Traits\Enums\BaseEnum;
enum GeoType: int
{
use BaseEnum;
case exact = 0;
case commune = 1;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const ROUTENAMES = [
self::exact->name => trans('Exacte'),
self::commune->name => trans('Code commune'),
];
}

View file

@ -0,0 +1,25 @@
<?php
namespace App\Enums\Breeders;
use App\Traits\Enums\BaseEnum;
enum OCBType: int
{
use BaseEnum;
case rabbit = 1;
case chicken = 2;
case turkey = 3;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::rabbit->name => trans('Lapin'),
self::chicken->name => trans('Poulet'),
self::turkey->name => trans('Dinde'),
];
}

View file

@ -0,0 +1,23 @@
<?php
namespace App\Enums\Breeders;
use App\Traits\Enums\BaseEnum;
enum PresentationType: int
{
use BaseEnum;
case picture = 0;
case video = 1;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::picture->name => trans('Photo'),
self::video->name => trans('Video'),
];
}

View file

@ -1,36 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self bloc1()
* Text et dropdowns array
*/
final class BreedingBlocType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'bloc1' => 0,
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'bloc1' => __('Bloc 1, (Text et dropdowns array)')
];
}
}

View file

@ -1,52 +0,0 @@
<?php
namespace App\Enums;
use Illuminate\Support\Str;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self breeding()
* @method static self job()
* @method static self food()
* @method static self health()
*/
final class BreedingPageType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
$labels = self::labels();
return [
'breeding' => Str::slug($labels['breeding']),
'job' => Str::slug($labels['job']),
'food' => Str::slug($labels['food']),
'health' => Str::slug($labels['health']),
];
}
/**
* Attention avant de modifier ceci, celà aura
* un impact sur l'affichage du site puisque
* les labels servent de clé primaire
* au modèle BreedingPage
*
* Les label sont utilisé pour les slug nottament
* mais aussi pour identifier le type de page cf values()
*
* @return array
*/
protected static function labels(): array
{
return [
'breeding' => __('L\'élevage des volailles'),
'job' => __('Le métier d\'éleveur de volailles'),
'food' => __('L\'alimentation des volailles'),
'health' => __('La santé des volailles')
];
}
}

View file

@ -0,0 +1,27 @@
<?php
namespace App\Enums\Breedings;
use App\Traits\Enums\BaseEnum;
enum BreedingTypeEnum: int
{
use BaseEnum;
case breedingPoultry = 1;
case breedingJob = 2;
case breedingFood = 3;
case breedingHealth = 4;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::breedingPoultry->name => 'L\'élevage des volailles',
self::breedingJob->name => 'Le métier d\'éleveur de volailles',
self::breedingFood->name => 'L\'alimentation des volailles',
self::breedingHealth->name => 'La santé des volailles',
];
}

View file

@ -0,0 +1,23 @@
<?php
namespace App\Enums;
use App\Traits\Enums\BaseEnum;
enum CkEditorConfigName: int
{
use BaseEnum;
case minimal = 1;
case basic = 2;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::minimal->name => 'minimal',
self::basic->name => 'basic',
];
}

View file

@ -0,0 +1,49 @@
<?php
namespace App\Enums\Club;
use App\Traits\Enums\BaseEnum;
enum NewsClubTypeEnum: int
{
use BaseEnum;
case news = 1;
case survey = 2;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::news->name => 'Actualité',
self::survey->name => 'Sondage',
];
/**
* Get the icon.
*
* @return string
*/
public function icon(): string
{
return match ($this) {
self::news => 'fa-newspaper',
self::survey => 'fa-chart-simple',
};
}
/**
* Get the color.
*
* @return string
*/
public function color(): string
{
return match ($this) {
self::news => 'text-bg-tertiary',
self::survey => 'text-bg-warning',
};
}
}

View file

@ -1,48 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self m()
* @method static self mme()
*/
final class ContactFormCivility extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'm' => 1,
'mme' => 2
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'mme' => __('Mme'),
'm' => __('M')
];
}
/**
* Output the value as a string
*
* @return string
*/
public function __toString(): string
{
return (string)$this->label;
}
}

View file

@ -1,62 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self none()
* @method static self abuse()
* @method static self complain()
* @method static self recipe()
* @method static self games()
* @method static self onepage()
*/
final class ContactFormType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'none' => 0,
'abuse' => 1,
// * special case passerelle
'complain' => 3,
'recipe' => 5,
'games' => 9,
// * special case page nl
'onepage' => 10,
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'none' => trans('Aucun'),
'abuse' => trans('Le Club des Gaulois et Les Départ’aimants'),
'complain' => __('Réclamation Produit'),
'recipe' => __('Les Recettes'),
'games' => __('Les Jeux'),
'onepage' => 'Used for one page'
];
}
/**
* Output the value as a string
*
* @return string
*/
public function __toString(): string
{
return (string)$this->label;
}
}

View file

@ -0,0 +1,49 @@
<?php
namespace App\Enums\Customers;
use App\Traits\Enums\BaseEnum;
use Illuminate\Support\Facades\Vite;
enum Civility: int
{
use BaseEnum;
case m = 1;
case mme = 2;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::m->name => 'Un poulet',
self::mme->name => 'Une poule',
];
/**
* Get picture
*
* @return string
*/
public function picture(): string
{
return match ($this) {
self::m => Vite::asset("resources/assets/images/club/game-points/chicken.png"),
self::mme => Vite::asset("resources/assets/images/club/game-points/hen.png"),
};
}
/**
* Get autocomplete
*
* @return string
*/
public function autoComplete(): string
{
return match ($this) {
self::m => 'Monsieur',
self::mme => 'Madame',
};
}
}

View file

@ -0,0 +1,28 @@
<?php
namespace App\Enums\Customers;
use App\Traits\Enums\BaseEnum;
enum LivingStatus: int
{
use BaseEnum;
case teenage = 1;
case youngAdult = 2;
case parent = 3;
case parentAlone = 4;
case elder = 5;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::teenage->name => 'Adolescent/Étudiant',
self::youngAdult->name => 'Jeune actif sans enfant',
self::parent->name => 'Parents',
self::parentAlone->name => 'Adulte sans enfant',
self::elder->name => 'Grand-parent',
];
}

View file

@ -1,38 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self description()
* @method static self media()
*/
final class DansLesPresType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'description' => 0,
'media' => 1,
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'description' => __('La demarche en description'),
'media' => __('La demarche en media'),
];
}
}

View file

@ -1,77 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self none()
* @method static self mon()
* @method static self tue()
* @method static self wed()
* @method static self thu()
* @method static self fri()
* @method static self sat()
* @method static self sun()
*/
final class Days extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'none' => 0,
'mon' => 1,
'tue' => 1 << 1,
'wed' => 1 << 2,
'thu' => 1 << 3,
'fri' => 1 << 4,
'sat' => 1 << 5,
'sun' => 1 << 6,
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'none' => __('None'),
'mon' => __('Monday'),
'tue' => __('Tuesday'),
'wed' => __('Wednesday'),
'thu' => __('Thursday'),
'fri' => __('Friday'),
'sat' => __('Saturday'),
'sun' => __('Sunday')
];
}
/**
* Output the value as a string
*
* @return string
*/
public function __toString(): string
{
return (string)$this->label;
}
/**
* Checks if days contain this day
*
* @param integer $days
* @return boolean
*/
public function has(int $days)
{
return (bool)($this->value & $days);
}
}

View file

@ -1,32 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
abstract class Departaimant extends BaseEnumRoutable
{
/**
* Output the value as a string
*
* @return string
*/
public function __toString(): string
{
return (string)$this->label;
}
/**
* Get All departaimants
*
* @return array<Departaimant>
*/
public static function all(): array
{
$o = [];
foreach (static::toArray() as $value => $label) {
$o[] = static::make($value);
}
return $o;
}
}

View file

@ -1,51 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self vintage()
* @method static self current()
*/
final class DepartaimantCollectionType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'vintage' => 0,
'current' => 1,
];
}
/**
* Enum label
*
* @return array
*/
protected static function labels(): array
{
return [
'vintage' => __('Collection Vintage'),
'current' => __('Collection Actuelle')
];
}
/**
* Json serialize implementation.
*
* @return array
*/
public function jsonSerialize(): array
{
return [
'value' => $this->value,
'label' => $this->label
];
}
}

View file

@ -1,333 +0,0 @@
<?php
namespace App\Enums;
/**
* @method static self ain()
* @method static self aisne()
* @method static self allier()
* @method static self alpesdehauteprovence()
* @method static self hautesalpes()
* @method static self alpesmaritimes()
* @method static self ardeche()
* @method static self ardennes()
* @method static self ariege()
* @method static self aube()
* @method static self aude()
* @method static self aveyron()
* @method static self bouchesdurhone()
* @method static self calvados()
* @method static self cantal()
* @method static self charente()
* @method static self charentemaritime()
* @method static self cher()
* @method static self correze()
* @method static self corsedusud()
* @method static self hautecorse()
* @method static self cotedor()
* @method static self cotesdarmor()
* @method static self creuse()
* @method static self dordogne()
* @method static self doubs()
* @method static self drome()
* @method static self eure()
* @method static self eureetloir()
* @method static self finistere()
* @method static self gard()
* @method static self hautegaronne()
* @method static self gers()
* @method static self gironde()
* @method static self herault()
* @method static self illeetvilaine()
* @method static self indre()
* @method static self indreetloire()
* @method static self isere()
* @method static self jura()
* @method static self landes()
* @method static self loiretcher()
* @method static self loire()
* @method static self hauteloire()
* @method static self loireatlantique()
* @method static self loiret()
* @method static self lot()
* @method static self lotetgaronne()
* @method static self lozere()
* @method static self maineetloire()
* @method static self manche()
* @method static self marne()
* @method static self hautemarne()
* @method static self mayenne()
* @method static self meurtheetmoselle()
* @method static self meuse()
* @method static self morbihan()
* @method static self moselle()
* @method static self nievre()
* @method static self nord()
* @method static self oise()
* @method static self orne()
* @method static self pasdecalais()
* @method static self puydedome()
* @method static self pyreneesatlantiques()
* @method static self hautespyrenees()
* @method static self pyreneesorientales()
* @method static self basrhin()
* @method static self hautrhin()
* @method static self rhone()
* @method static self hautesaone()
* @method static self saoneetloire()
* @method static self sarthe()
* @method static self savoie()
* @method static self hautesavoie()
* @method static self paris()
* @method static self seinemaritime()
* @method static self seineetmarne()
* @method static self yvelines()
* @method static self deuxsevres()
* @method static self somme()
* @method static self tarn()
* @method static self tarnetgaronne()
* @method static self var()
* @method static self vaucluse()
* @method static self vendee()
* @method static self vienne()
* @method static self hautevienne()
* @method static self vosges()
* @method static self yonne()
* @method static self territoiredebelfort()
* @method static self essonne()
* @method static self hautsdeseine()
* @method static self seinesaintdenis()
* @method static self valdemarne()
* @method static self valdoise()
* @method static self guadeloupe()
* @method static self martinique()
* @method static self guyane()
* @method static self lareunion()
* @method static self mayotte()
*/
final class DepartaimantCurrent extends Departaimant
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'ain' => '01',
'aisne' => '02',
'allier' => '03',
'alpesdehauteprovence' => '04',
'hautesalpes' => '05',
'alpesmaritimes' => '06',
'ardeche' => '07',
'ardennes' => '08',
'ariege' => '09',
'aube' => '10',
'aude' => '11',
'aveyron' => '12',
'bouchesdurhone' => '13',
'calvados' => '14',
'cantal' => '15',
'charente' => '16',
'charentemaritime' => '17',
'cher' => '18',
'correze' => '19',
'corsedusud' => '2A',
'hautecorse' => '2B',
'cotedor' => '21',
'cotesdarmor' => '22',
'creuse' => '23',
'dordogne' => '24',
'doubs' => '25',
'drome' => '26',
'eure' => '27',
'eureetloir' => '28',
'finistere' => '29',
'gard' => '30',
'hautegaronne' => '31',
'gers' => '32',
'gironde' => '33',
'herault' => '34',
'illeetvilaine' => '35',
'indre' => '36',
'indreetloire' => '37',
'isere' => '38',
'jura' => '39',
'landes' => '40',
'loiretcher' => '41',
'loire' => '42',
'hauteloire' => '43',
'loireatlantique' => '44',
'loiret' => '45',
'lot' => '46',
'lotetgaronne' => '47',
'lozere' => '48',
'maineetloire' => '49',
'manche' => '50',
'marne' => '51',
'hautemarne' => '52',
'mayenne' => '53',
'meurtheetmoselle' => '54',
'meuse' => '55',
'morbihan' => '56',
'moselle' => '57',
'nievre' => '58',
'nord' => '59',
'oise' => '60',
'orne' => '61',
'pasdecalais' => '62',
'puydedome' => '63',
'pyreneesatlantiques' => '64',
'hautespyrenees' => '65',
'pyreneesorientales' => '66',
'basrhin' => '67',
'hautrhin' => '68',
'rhone' => '69',
'hautesaone' => '70',
'saoneetloire' => '71',
'sarthe' => '72',
'savoie' => '73',
'hautesavoie' => '74',
'paris' => '75',
'seinemaritime' => '76',
'seineetmarne' => '77',
'yvelines' => '78',
'deuxsevres' => '79',
'somme' => '80',
'tarn' => '81',
'tarnetgaronne' => '82',
'var' => '83',
'vaucluse' => '84',
'vendee' => '85',
'vienne' => '86',
'hautevienne' => '87',
'vosges' => '88',
'yonne' => '89',
'territoiredebelfort' => '90',
'essonne' => '91',
'hautsdeseine' => '92',
'seinesaintdenis' => '93',
'valdemarne' => '94',
'valdoise' => '95',
'guadeloupe' => '971',
'martinique' => '972',
'guyane' => '973',
'lareunion' => '974',
'mayotte' => '976'
];
}
/**
* Enum label
*
* @return array
*/
protected static function labels(): array
{
return [
'ain' => 'Ain',
'aisne' => 'Aisne',
'allier' => 'Allier',
'alpesdehauteprovence' => 'Alpes-de-Haute-Provence',
'hautesalpes' => 'Hautes-alpes',
'alpesmaritimes' => 'Alpes-maritimes',
'ardeche' => 'Ardèche',
'ardennes' => 'Ardennes',
'ariege' => 'Ariège',
'aube' => 'Aube',
'aude' => 'Aude',
'aveyron' => 'Aveyron',
'bouchesdurhone' => 'Bouches-du-Rhône',
'calvados' => 'Calvados',
'cantal' => 'Cantal',
'charente' => 'Charente',
'charentemaritime' => 'Charente-maritime',
'cher' => 'Cher',
'correze' => 'Corrèze',
'corsedusud' => 'Corse-du-sud',
'hautecorse' => 'Haute-Corse',
'cotedor' => 'Côte-d\'Or',
'cotesdarmor' => 'Côtes-d\'Armor',
'creuse' => 'Creuse',
'dordogne' => 'Dordogne',
'doubs' => 'Doubs',
'drome' => 'Drôme',
'eure' => 'Eure',
'eureetloir' => 'Eure-et-loir',
'finistere' => 'Finistère',
'gard' => 'Gard',
'hautegaronne' => 'Haute-garonne',
'gers' => 'Gers',
'gironde' => 'Gironde',
'herault' => 'Hérault',
'illeetvilaine' => 'Ille-et-vilaine',
'indre' => 'Indre',
'indreetloire' => 'Indre-et-loire',
'isere' => 'Isère',
'jura' => 'Jura',
'landes' => 'Landes',
'loiretcher' => 'Loir-et-cher',
'loire' => 'Loire',
'hauteloire' => 'Haute-loire',
'loireatlantique' => 'Loire-atlantique',
'loiret' => 'Loiret',
'lot' => 'Lot',
'lotetgaronne' => 'Lot-et-garonne',
'lozere' => 'Lozère',
'maineetloire' => 'Maine-et-loire',
'manche' => 'Manche',
'marne' => 'Marne',
'hautemarne' => 'Haute-marne',
'mayenne' => 'Mayenne',
'meurtheetmoselle' => 'Meurthe-et-moselle',
'meuse' => 'Meuse',
'morbihan' => 'Morbihan',
'moselle' => 'Moselle',
'nievre' => 'Nièvre',
'nord' => 'Nord',
'oise' => 'Oise',
'orne' => 'Orne',
'pasdecalais' => 'Pas-de-calais',
'puydedome' => 'Puy-de-dôme',
'pyreneesatlantiques' => 'Pyrénées-atlantiques',
'hautespyrenees' => 'Hautes-Pyrénées',
'pyreneesorientales' => 'Pyrénées-orientales',
'basrhin' => 'Bas-rhin',
'hautrhin' => 'Haut-rhin',
'rhone' => 'Rhône',
'hautesaone' => 'Haute-saône',
'saoneetloire' => 'Saône-et-loire',
'sarthe' => 'Sarthe',
'savoie' => 'Savoie',
'hautesavoie' => 'Haute-savoie',
'paris' => 'Paris',
'seinemaritime' => 'Seine-maritime',
'seineetmarne' => 'Seine-et-marne',
'yvelines' => 'Yvelines',
'deuxsevres' => 'Deux-sèvres',
'somme' => 'Somme',
'tarn' => 'Tarn',
'tarnetgaronne' => 'Tarn-et-Garonne',
'var' => 'Var',
'vaucluse' => 'Vaucluse',
'vendee' => 'Vendée',
'vienne' => 'Vienne',
'hautevienne' => 'Haute-vienne',
'vosges' => 'Vosges',
'yonne' => 'Yonne',
'territoiredebelfort' => 'Territoire de belfort',
'essonne' => 'Essonne',
'hautsdeseine' => 'Hauts-de-seine',
'seinesaintdenis' => 'Seine-Saint-Denis',
'valdemarne' => 'Val-de-marne',
'valdoise' => 'Val-d\'Oise',
'guadeloupe' => 'Guadeloupe',
'martinique' => 'Martinique',
'guyane' => 'Guyane',
'lareunion' => 'La réunion',
'mayotte' => 'Mayotte'
];
}
}

View file

@ -1,84 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self none()
* @method static self has()
* @method static self wants()
* @method static self gives()
*/
final class DepartaimantStatus extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'none' => 0,
'has' => 1,
'gives' => 2,
'wants' => 3,
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'none' => __('Non possédé'),
'has' => __('Je possède'),
'gives' => __("J'échange"),
'wants' => __('Je cherche'),
];
}
/**
* Output the value as a string
*
* @return string
*/
public function __toString(): string
{
return (string)$this->label;
}
/**
* To Array
*
* @return \Kwaadpepper\Enum\BaseEnum[]
*/
public static function toArray(): array
{
$array = [];
foreach (parent::toArray() as $enum) {
$array[$enum->getDefinition()] = [
'value' => $enum->value,
'label' => $enum->label
];
}
return $array;
}
/**
* Json serialize implementation.
*
* @return array
*/
public function jsonSerialize(): array
{
return [
'value' => $this->value,
'label' => \stripslashes($this->label)
];
}
}

View file

@ -1,327 +0,0 @@
<?php
namespace App\Enums;
/**
* @method static self ain()
* @method static self aisne()
* @method static self allier()
* @method static self alpesdehauteprovence()
* @method static self hautesalpes()
* @method static self alpesmaritimes()
* @method static self ardeche()
* @method static self ardennes()
* @method static self ariege()
* @method static self aube()
* @method static self aude()
* @method static self aveyron()
* @method static self bouchesdurhone()
* @method static self calvados()
* @method static self cantal()
* @method static self charente()
* @method static self charentemaritime()
* @method static self cher()
* @method static self correze()
* @method static self corsedusud()
* @method static self hautecorse()
* @method static self cotedor()
* @method static self cotesdarmor()
* @method static self creuse()
* @method static self dordogne()
* @method static self doubs()
* @method static self drome()
* @method static self eure()
* @method static self eureetloir()
* @method static self finistere()
* @method static self gard()
* @method static self hautegaronne()
* @method static self gers()
* @method static self gironde()
* @method static self herault()
* @method static self illeetvilaine()
* @method static self indre()
* @method static self indreetloire()
* @method static self isere()
* @method static self jura()
* @method static self landes()
* @method static self loiretcher()
* @method static self loire()
* @method static self hauteloire()
* @method static self loireatlantique()
* @method static self loiret()
* @method static self lot()
* @method static self lotetgaronne()
* @method static self lozere()
* @method static self maineetloire()
* @method static self manche()
* @method static self marne()
* @method static self hautemarne()
* @method static self mayenne()
* @method static self meurtheetmoselle()
* @method static self meuse()
* @method static self morbihan()
* @method static self moselle()
* @method static self nievre()
* @method static self nord()
* @method static self oise()
* @method static self orne()
* @method static self pasdecalais()
* @method static self puydedome()
* @method static self pyreneesatlantiques()
* @method static self hautespyrenees()
* @method static self pyreneesorientales()
* @method static self basrhin()
* @method static self hautrhin()
* @method static self rhone()
* @method static self hautesaone()
* @method static self saoneetloire()
* @method static self sarthe()
* @method static self savoie()
* @method static self hautesavoie()
* @method static self paris()
* @method static self seinemaritime()
* @method static self seineetmarne()
* @method static self yvelines()
* @method static self deuxsevres()
* @method static self somme()
* @method static self tarn()
* @method static self tarnetgaronne()
* @method static self var()
* @method static self vaucluse()
* @method static self vendee()
* @method static self vienne()
* @method static self hautevienne()
* @method static self vosges()
* @method static self yonne()
* @method static self territoiredebelfort()
* @method static self essonne()
* @method static self hautsdeseine()
* @method static self seinesaintdenis()
* @method static self valdemarne()
* @method static self valdoise()
* @method static self guadeloupeMartinique()
* @method static self guyane()
* @method static self lareunion()
*/
final class DepartaimantVintage extends Departaimant
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'ain' => '01',
'aisne' => '02',
'allier' => '03',
'alpesdehauteprovence' => '04',
'hautesalpes' => '05',
'alpesmaritimes' => '06',
'ardeche' => '07',
'ardennes' => '08',
'ariege' => '09',
'aube' => '10',
'aude' => '11',
'aveyron' => '12',
'bouchesdurhone' => '13',
'calvados' => '14',
'cantal' => '15',
'charente' => '16',
'charentemaritime' => '17',
'cher' => '18',
'correze' => '19',
'corsedusud' => '2A',
'hautecorse' => '2B',
'cotedor' => '21',
'cotesdarmor' => '22',
'creuse' => '23',
'dordogne' => '24',
'doubs' => '25',
'drome' => '26',
'eure' => '27',
'eureetloir' => '28',
'finistere' => '29',
'gard' => '30',
'hautegaronne' => '31',
'gers' => '32',
'gironde' => '33',
'herault' => '34',
'illeetvilaine' => '35',
'indre' => '36',
'indreetloire' => '37',
'isere' => '38',
'jura' => '39',
'landes' => '40',
'loiretcher' => '41',
'loire' => '42',
'hauteloire' => '43',
'loireatlantique' => '44',
'loiret' => '45',
'lot' => '46',
'lotetgaronne' => '47',
'lozere' => '48',
'maineetloire' => '49',
'manche' => '50',
'marne' => '51',
'hautemarne' => '52',
'mayenne' => '53',
'meurtheetmoselle' => '54',
'meuse' => '55',
'morbihan' => '56',
'moselle' => '57',
'nievre' => '58',
'nord' => '59',
'oise' => '60',
'orne' => '61',
'pasdecalais' => '62',
'puydedome' => '63',
'pyreneesatlantiques' => '64',
'hautespyrenees' => '65',
'pyreneesorientales' => '66',
'basrhin' => '67',
'hautrhin' => '68',
'rhone' => '69',
'hautesaone' => '70',
'saoneetloire' => '71',
'sarthe' => '72',
'savoie' => '73',
'hautesavoie' => '74',
'paris' => '75',
'seinemaritime' => '76',
'seineetmarne' => '77',
'yvelines' => '78',
'deuxsevres' => '79',
'somme' => '80',
'tarn' => '81',
'tarnetgaronne' => '82',
'var' => '83',
'vaucluse' => '84',
'vendee' => '85',
'vienne' => '86',
'hautevienne' => '87',
'vosges' => '88',
'yonne' => '89',
'territoiredebelfort' => '90',
'essonne' => '91',
'hautsdeseine' => '92',
'seinesaintdenis' => '93',
'valdemarne' => '94',
'valdoise' => '95',
'guadeloupeMartinique' => '971/972',
'guyane' => '973',
'lareunion' => '974',
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'ain' => 'Ain',
'aisne' => 'Aisne',
'allier' => 'Allier',
'alpesdehauteprovence' => 'Alpes-de-Haute-Provence',
'hautesalpes' => 'Hautes-alpes',
'alpesmaritimes' => 'Alpes-maritimes',
'ardeche' => 'Ardèche',
'ardennes' => 'Ardennes',
'ariege' => 'Ariège',
'aube' => 'Aube',
'aude' => 'Aude',
'aveyron' => 'Aveyron',
'bouchesdurhone' => 'Bouches-du-Rhône',
'calvados' => 'Calvados',
'cantal' => 'Cantal',
'charente' => 'Charente',
'charentemaritime' => 'Charente-maritime',
'cher' => 'Cher',
'correze' => 'Corrèze',
'corsedusud' => 'Corse-du-sud',
'hautecorse' => 'Haute-Corse',
'cotedor' => 'Côte-d\'Or',
'cotesdarmor' => 'Côtes-d\'Armor',
'creuse' => 'Creuse',
'dordogne' => 'Dordogne',
'doubs' => 'Doubs',
'drome' => 'Drôme',
'eure' => 'Eure',
'eureetloir' => 'Eure-et-loir',
'finistere' => 'Finistère',
'gard' => 'Gard',
'hautegaronne' => 'Haute-garonne',
'gers' => 'Gers',
'gironde' => 'Gironde',
'herault' => 'Hérault',
'illeetvilaine' => 'Ille-et-vilaine',
'indre' => 'Indre',
'indreetloire' => 'Indre-et-loire',
'isere' => 'Isère',
'jura' => 'Jura',
'landes' => 'Landes',
'loiretcher' => 'Loir-et-cher',
'loire' => 'Loire',
'hauteloire' => 'Haute-loire',
'loireatlantique' => 'Loire-atlantique',
'loiret' => 'Loiret',
'lot' => 'Lot',
'lotetgaronne' => 'Lot-et-garonne',
'lozere' => 'Lozère',
'maineetloire' => 'Maine-et-loire',
'manche' => 'Manche',
'marne' => 'Marne',
'hautemarne' => 'Haute-marne',
'mayenne' => 'Mayenne',
'meurtheetmoselle' => 'Meurthe-et-moselle',
'meuse' => 'Meuse',
'morbihan' => 'Morbihan',
'moselle' => 'Moselle',
'nievre' => 'Nièvre',
'nord' => 'Nord',
'oise' => 'Oise',
'orne' => 'Orne',
'pasdecalais' => 'Pas-de-calais',
'puydedome' => 'Puy-de-dôme',
'pyreneesatlantiques' => 'Pyrénées-atlantiques',
'hautespyrenees' => 'Hautes-Pyrénées',
'pyreneesorientales' => 'Pyrénées-orientales',
'basrhin' => 'Bas-rhin',
'hautrhin' => 'Haut-rhin',
'rhone' => 'Rhône',
'hautesaone' => 'Haute-saône',
'saoneetloire' => 'Saône-et-loire',
'sarthe' => 'Sarthe',
'savoie' => 'Savoie',
'hautesavoie' => 'Haute-savoie',
'paris' => 'Paris',
'seinemaritime' => 'Seine-maritime',
'seineetmarne' => 'Seine-et-marne',
'yvelines' => 'Yvelines',
'deuxsevres' => 'Deux-sèvres',
'somme' => 'Somme',
'tarn' => 'Tarn',
'tarnetgaronne' => 'Tarn-et-Garonne',
'var' => 'Var',
'vaucluse' => 'Vaucluse',
'vendee' => 'Vendée',
'vienne' => 'Vienne',
'hautevienne' => 'Haute-vienne',
'vosges' => 'Vosges',
'yonne' => 'Yonne',
'territoiredebelfort' => 'Territoire de belfort',
'essonne' => 'Essonne',
'hautsdeseine' => 'Hauts-de-seine',
'seinesaintdenis' => 'Seine-Saint-Denis',
'valdemarne' => 'Val-de-marne',
'valdoise' => 'Val-d\'Oise',
'guadeloupeMartinique' => 'Guadeloupe et Martinique',
'guyane' => 'Guyane',
'lareunion' => 'La réunion'
];
}
}

View file

@ -0,0 +1,23 @@
<?php
namespace App\Enums\Departaimants;
use App\Traits\Enums\BaseEnum;
enum DepartaimantCollectionType: string
{
use BaseEnum;
case vintage = '1';
case current = '2';
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::vintage->name => 'Collection Vintage',
self::current->name => 'Collection Actuelle',
];
}

View file

@ -0,0 +1,207 @@
<?php
namespace App\Enums\Departaimants;
use App\Traits\Enums\BaseEnum;
enum DepartaimantCurrent: string implements IDepartaimant
{
use BaseEnum;
case ain = '01';
case aisne = '02';
case allier = '03';
case alpesdehauteprovence = '04';
case hautesalpes = '05';
case alpesmaritimes = '06';
case ardeche = '07';
case ardennes = '08';
case ariege = '09';
case aube = '10';
case aude = '11';
case aveyron = '12';
case bouchesdurhone = '13';
case calvados = '14';
case cantal = '15';
case charente = '16';
case charentemaritime = '17';
case cher = '18';
case correze = '19';
case corsedusud = '2A';
case hautecorse = '2B';
case cotedor = '21';
case cotesdarmor = '22';
case creuse = '23';
case dordogne = '24';
case doubs = '25';
case drome = '26';
case eure = '27';
case eureetloir = '28';
case finistere = '29';
case gard = '30';
case hautegaronne = '31';
case gers = '32';
case gironde = '33';
case herault = '34';
case illeetvilaine = '35';
case indre = '36';
case indreetloire = '37';
case isere = '38';
case jura = '39';
case landes = '40';
case loiretcher = '41';
case loire = '42';
case hauteloire = '43';
case loireatlantique = '44';
case loiret = '45';
case lot = '46';
case lotetgaronne = '47';
case lozere = '48';
case maineetloire = '49';
case manche = '50';
case marne = '51';
case hautemarne = '52';
case mayenne = '53';
case meurtheetmoselle = '54';
case meuse = '55';
case morbihan = '56';
case moselle = '57';
case nievre = '58';
case nord = '59';
case oise = '60';
case orne = '61';
case pasdecalais = '62';
case puydedome = '63';
case pyreneesatlantiques = '64';
case hautespyrenees = '65';
case pyreneesorientales = '66';
case basrhin = '67';
case hautrhin = '68';
case rhone = '69';
case saoneetloire = '71';
case sarthe = '72';
case savoie = '73';
case hautesavoie = '74';
case seinemaritime = '76';
case seineetmarne = '77';
case deuxsevres = '79';
case somme = '80';
case tarn = '81';
case tarnetgaronne = '82';
case var = '83';
case vaucluse = '84';
case vendee = '85';
case vienne = '86';
case hautevienne = '87';
case vosges = '88';
case yonne = '89';
case territoiredebelfort = '90';
case essonne = '91';
case guadeloupe = '971';
case martinique = '972';
case guyane = '973';
case lareunion = '974';
case mayotte = '976';
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::ain->name => 'Ain',
self::aisne->name => 'Aisne',
self::allier->name => 'Allier',
self::alpesdehauteprovence->name => 'Alpes-de-Haute-Provence',
self::hautesalpes->name => 'Hautes-alpes',
self::alpesmaritimes->name => 'Alpes-maritimes',
self::ardeche->name => 'Ardèche',
self::ardennes->name => 'Ardennes',
self::ariege->name => 'Ariège',
self::aube->name => 'Aube',
self::aude->name => 'Aude',
self::aveyron->name => 'Aveyron',
self::bouchesdurhone->name => 'Bouches-du-Rhône',
self::calvados->name => 'Calvados',
self::cantal->name => 'Cantal',
self::charente->name => 'Charente',
self::charentemaritime->name => 'Charente-maritime',
self::cher->name => 'Cher',
self::correze->name => 'Corrèze',
self::corsedusud->name => 'Corse-du-sud',
self::hautecorse->name => 'Haute-Corse',
self::cotedor->name => 'Côte-d\'Or',
self::cotesdarmor->name => 'Côtes-d\'Armor',
self::creuse->name => 'Creuse',
self::dordogne->name => 'Dordogne',
self::doubs->name => 'Doubs',
self::drome->name => 'Drôme',
self::eure->name => 'Eure',
self::eureetloir->name => 'Eure-et-loir',
self::finistere->name => 'Finistère',
self::gard->name => 'Gard',
self::hautegaronne->name => 'Haute-garonne',
self::gers->name => 'Gers',
self::gironde->name => 'Gironde',
self::herault->name => 'Hérault',
self::illeetvilaine->name => 'Ille-et-vilaine',
self::indre->name => 'Indre',
self::indreetloire->name => 'Indre-et-loire',
self::isere->name => 'Isère',
self::jura->name => 'Jura',
self::landes->name => 'Landes',
self::loiretcher->name => 'Loir-et-cher',
self::loire->name => 'Loire',
self::hauteloire->name => 'Haute-loire',
self::loireatlantique->name => 'Loire-atlantique',
self::loiret->name => 'Loiret',
self::lot->name => 'Lot',
self::lotetgaronne->name => 'Lot-et-garonne',
self::lozere->name => 'Lozère',
self::maineetloire->name => 'Maine-et-loire',
self::manche->name => 'Manche',
self::marne->name => 'Marne',
self::hautemarne->name => 'Haute-marne',
self::mayenne->name => 'Mayenne',
self::meurtheetmoselle->name => 'Meurthe-et-moselle',
self::meuse->name => 'Meuse',
self::morbihan->name => 'Morbihan',
self::moselle->name => 'Moselle',
self::nievre->name => 'Nièvre',
self::nord->name => 'Nord',
self::oise->name => 'Oise',
self::orne->name => 'Orne',
self::pasdecalais->name => 'Pas-de-calais',
self::puydedome->name => 'Puy-de-dôme',
self::pyreneesatlantiques->name => 'Pyrénées-atlantiques',
self::hautespyrenees->name => 'Hautes-Pyrénées',
self::pyreneesorientales->name => 'Pyrénées-orientales',
self::basrhin->name => 'Bas-rhin',
self::hautrhin->name => 'Haut-rhin',
self::rhone->name => 'Rhône',
self::saoneetloire->name => 'Saône-et-loire',
self::sarthe->name => 'Sarthe',
self::savoie->name => 'Savoie',
self::hautesavoie->name => 'Haute-savoie',
self::seinemaritime->name => 'Seine-maritime',
self::seineetmarne->name => 'Seine-et-marne',
self::deuxsevres->name => 'Deux-sèvres',
self::somme->name => 'Somme',
self::tarn->name => 'Tarn',
self::tarnetgaronne->name => 'Tarn-et-Garonne',
self::var->name => 'Var',
self::vaucluse->name => 'Vaucluse',
self::vendee->name => 'Vendée',
self::vienne->name => 'Vienne',
self::hautevienne->name => 'Haute-vienne',
self::vosges->name => 'Vosges',
self::yonne->name => 'Yonne',
self::territoiredebelfort->name => 'Territoire de belfort',
self::essonne->name => 'Essonne',
self::guadeloupe->name => 'Guadeloupe',
self::martinique->name => 'Martinique',
self::guyane->name => 'Guyane',
self::lareunion->name => 'La réunion',
self::mayotte->name => 'Mayotte'
];
}

View file

@ -0,0 +1,27 @@
<?php
namespace App\Enums\Departaimants;
use App\Traits\Enums\BaseEnum;
enum DepartaimantStatus: int
{
use BaseEnum;
case none = 0;
case has = 1;
case gives = 2;
case wants = 3;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::none->name => 'Non possédé',
self::has->name => 'Mes magnets',
self::wants->name => 'Je cherche un magnet',
self::gives->name => 'J\'échange un magnet',
];
}

View file

@ -0,0 +1,203 @@
<?php
namespace App\Enums\Departaimants;
use App\Traits\Enums\BaseEnum;
enum DepartaimantVintage: string implements IDepartaimant
{
use BaseEnum;
case ain = '01';
case aisne = '02';
case allier = '03';
case alpesdehauteprovence = '04';
case hautesalpes = '05';
case alpesmaritimes = '06';
case ardeche = '07';
case ardennes = '08';
case ariege = '09';
case aube = '10';
case aude = '11';
case aveyron = '12';
case bouchesdurhone = '13';
case calvados = '14';
case cantal = '15';
case charente = '16';
case charentemaritime = '17';
case cher = '18';
case correze = '19';
case corsedusud = '2A';
case hautecorse = '2B';
case cotedor = '21';
case cotesdarmor = '22';
case creuse = '23';
case dordogne = '24';
case doubs = '25';
case drome = '26';
case eure = '27';
case eureetloir = '28';
case finistere = '29';
case gard = '30';
case hautegaronne = '31';
case gers = '32';
case gironde = '33';
case herault = '34';
case illeetvilaine = '35';
case indre = '36';
case indreetloire = '37';
case isere = '38';
case jura = '39';
case landes = '40';
case loiretcher = '41';
case loire = '42';
case hauteloire = '43';
case loireatlantique = '44';
case loiret = '45';
case lot = '46';
case lotetgaronne = '47';
case lozere = '48';
case maineetloire = '49';
case manche = '50';
case marne = '51';
case hautemarne = '52';
case mayenne = '53';
case meurtheetmoselle = '54';
case meuse = '55';
case morbihan = '56';
case moselle = '57';
case nievre = '58';
case nord = '59';
case oise = '60';
case orne = '61';
case pasdecalais = '62';
case puydedome = '63';
case pyreneesatlantiques = '64';
case hautespyrenees = '65';
case pyreneesorientales = '66';
case basrhin = '67';
case hautrhin = '68';
case rhone = '69';
case saoneetloire = '71';
case sarthe = '72';
case savoie = '73';
case hautesavoie = '74';
case seinemaritime = '76';
case seineetmarne = '77';
case deuxsevres = '79';
case somme = '80';
case tarn = '81';
case tarnetgaronne = '82';
case var = '83';
case vaucluse = '84';
case vendee = '85';
case vienne = '86';
case hautevienne = '87';
case vosges = '88';
case yonne = '89';
case territoiredebelfort = '90';
case essonne = '91';
case guadeloupeMartinique = '971/972';
case guyane = '973';
case lareunion = '974';
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::ain->name => 'Ain',
self::aisne->name => 'Aisne',
self::allier->name => 'Allier',
self::alpesdehauteprovence->name => 'Alpes-de-Haute-Provence',
self::hautesalpes->name => 'Hautes-alpes',
self::alpesmaritimes->name => 'Alpes-maritimes',
self::ardeche->name => 'Ardèche',
self::ardennes->name => 'Ardennes',
self::ariege->name => 'Ariège',
self::aube->name => 'Aube',
self::aude->name => 'Aude',
self::aveyron->name => 'Aveyron',
self::bouchesdurhone->name => 'Bouches-du-Rhône',
self::calvados->name => 'Calvados',
self::cantal->name => 'Cantal',
self::charente->name => 'Charente',
self::charentemaritime->name => 'Charente-maritime',
self::cher->name => 'Cher',
self::correze->name => 'Corrèze',
self::corsedusud->name => 'Corse-du-sud',
self::hautecorse->name => 'Haute-Corse',
self::cotedor->name => 'Côte-d\'Or',
self::cotesdarmor->name => 'Côtes-d\'Armor',
self::creuse->name => 'Creuse',
self::dordogne->name => 'Dordogne',
self::doubs->name => 'Doubs',
self::drome->name => 'Drôme',
self::eure->name => 'Eure',
self::eureetloir->name => 'Eure-et-loir',
self::finistere->name => 'Finistère',
self::gard->name => 'Gard',
self::hautegaronne->name => 'Haute-garonne',
self::gers->name => 'Gers',
self::gironde->name => 'Gironde',
self::herault->name => 'Hérault',
self::illeetvilaine->name => 'Ille-et-vilaine',
self::indre->name => 'Indre',
self::indreetloire->name => 'Indre-et-loire',
self::isere->name => 'Isère',
self::jura->name => 'Jura',
self::landes->name => 'Landes',
self::loiretcher->name => 'Loir-et-cher',
self::loire->name => 'Loire',
self::hauteloire->name => 'Haute-loire',
self::loireatlantique->name => 'Loire-atlantique',
self::loiret->name => 'Loiret',
self::lot->name => 'Lot',
self::lotetgaronne->name => 'Lot-et-garonne',
self::lozere->name => 'Lozère',
self::maineetloire->name => 'Maine-et-loire',
self::manche->name => 'Manche',
self::marne->name => 'Marne',
self::hautemarne->name => 'Haute-marne',
self::mayenne->name => 'Mayenne',
self::meurtheetmoselle->name => 'Meurthe-et-moselle',
self::meuse->name => 'Meuse',
self::morbihan->name => 'Morbihan',
self::moselle->name => 'Moselle',
self::nievre->name => 'Nièvre',
self::nord->name => 'Nord',
self::oise->name => 'Oise',
self::orne->name => 'Orne',
self::pasdecalais->name => 'Pas-de-calais',
self::puydedome->name => 'Puy-de-dôme',
self::pyreneesatlantiques->name => 'Pyrénées-atlantiques',
self::hautespyrenees->name => 'Hautes-Pyrénées',
self::pyreneesorientales->name => 'Pyrénées-orientales',
self::basrhin->name => 'Bas-rhin',
self::hautrhin->name => 'Haut-rhin',
self::rhone->name => 'Rhône',
self::saoneetloire->name => 'Saône-et-loire',
self::sarthe->name => 'Sarthe',
self::savoie->name => 'Savoie',
self::hautesavoie->name => 'Haute-savoie',
self::seinemaritime->name => 'Seine-maritime',
self::seineetmarne->name => 'Seine-et-marne',
self::deuxsevres->name => 'Deux-sèvres',
self::somme->name => 'Somme',
self::tarn->name => 'Tarn',
self::tarnetgaronne->name => 'Tarn-et-Garonne',
self::var->name => 'Var',
self::vaucluse->name => 'Vaucluse',
self::vendee->name => 'Vendée',
self::vienne->name => 'Vienne',
self::hautevienne->name => 'Haute-vienne',
self::vosges->name => 'Vosges',
self::yonne->name => 'Yonne',
self::territoiredebelfort->name => 'Territoire de belfort',
self::essonne->name => 'Essonne',
self::guadeloupeMartinique->name => 'Guadeloupe et Martinique',
self::guyane->name => 'Guyane',
self::lareunion->name => 'La réunion'
];
}

View file

@ -0,0 +1,13 @@
<?php
namespace App\Enums\Departaimants;
interface IDepartaimant
{
/**
* Get enum value.
*
* @return string|integer
*/
public function value(): string|int;
}

221
app/Enums/Department.php Normal file
View file

@ -0,0 +1,221 @@
<?php
namespace App\Enums;
use App\Traits\Enums\BaseEnum;
enum Department: string
{
use BaseEnum;
case ain = '01';
case aisne = '02';
case allier = '03';
case alpesdehauteprovence = '04';
case hautesalpes = '05';
case alpesmaritimes = '06';
case ardeche = '07';
case ardennes = '08';
case ariege = '09';
case aube = '10';
case aude = '11';
case aveyron = '12';
case bouchesdurhone = '13';
case calvados = '14';
case cantal = '15';
case charente = '16';
case charentemaritime = '17';
case cher = '18';
case correze = '19';
case corsedusud = '2A';
case hautecorse = '2B';
case cotedor = '21';
case cotesdarmor = '22';
case creuse = '23';
case dordogne = '24';
case doubs = '25';
case drome = '26';
case eure = '27';
case eureetloir = '28';
case finistere = '29';
case gard = '30';
case hautegaronne = '31';
case gers = '32';
case gironde = '33';
case herault = '34';
case illeetvilaine = '35';
case indre = '36';
case indreetloire = '37';
case isere = '38';
case jura = '39';
case landes = '40';
case loiretcher = '41';
case loire = '42';
case hauteloire = '43';
case loireatlantique = '44';
case loiret = '45';
case lot = '46';
case lotetgaronne = '47';
case lozere = '48';
case maineetloire = '49';
case manche = '50';
case marne = '51';
case hautemarne = '52';
case mayenne = '53';
case meurtheetmoselle = '54';
case meuse = '55';
case morbihan = '56';
case moselle = '57';
case nievre = '58';
case nord = '59';
case oise = '60';
case orne = '61';
case pasdecalais = '62';
case puydedome = '63';
case pyreneesatlantiques = '64';
case hautespyrenees = '65';
case pyreneesorientales = '66';
case basrhin = '67';
case hautrhin = '68';
case rhone = '69';
case hautesaone = '70';
case saoneetloire = '71';
case sarthe = '72';
case savoie = '73';
case hautesavoie = '74';
case paris = '75';
case seinemaritime = '76';
case seineetmarne = '77';
case yvelines = '78';
case deuxsevres = '79';
case somme = '80';
case tarn = '81';
case tarnetgaronne = '82';
case var = '83';
case vaucluse = '84';
case vendee = '85';
case vienne = '86';
case hautevienne = '87';
case vosges = '88';
case yonne = '89';
case territoiredebelfort = '90';
case essonne = '91';
case hautsdeseine = '92';
case seinesaintdenis = '93';
case valdemarne = '94';
case valdoise = '95';
case guadeloupe = '971';
case martinique = '972';
case guyane = '973';
case lareunion = '974';
case mayotte = '976';
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::ain->name => 'Ain',
self::aisne->name => 'Aisne',
self::allier->name => 'Allier',
self::alpesdehauteprovence->name => 'Alpes-de-Haute-Provence',
self::hautesalpes->name => 'Hautes-alpes',
self::alpesmaritimes->name => 'Alpes-maritimes',
self::ardeche->name => 'Ardèche',
self::ardennes->name => 'Ardennes',
self::ariege->name => 'Ariège',
self::aube->name => 'Aube',
self::aude->name => 'Aude',
self::aveyron->name => 'Aveyron',
self::bouchesdurhone->name => 'Bouches-du-Rhône',
self::calvados->name => 'Calvados',
self::cantal->name => 'Cantal',
self::charente->name => 'Charente',
self::charentemaritime->name => 'Charente-maritime',
self::cher->name => 'Cher',
self::correze->name => 'Corrèze',
self::corsedusud->name => 'Corse-du-sud',
self::hautecorse->name => 'Haute-Corse',
self::cotedor->name => 'Côte-d\'Or',
self::cotesdarmor->name => 'Côtes-d\'Armor',
self::creuse->name => 'Creuse',
self::dordogne->name => 'Dordogne',
self::doubs->name => 'Doubs',
self::drome->name => 'Drôme',
self::eure->name => 'Eure',
self::eureetloir->name => 'Eure-et-loir',
self::finistere->name => 'Finistère',
self::gard->name => 'Gard',
self::hautegaronne->name => 'Haute-garonne',
self::gers->name => 'Gers',
self::gironde->name => 'Gironde',
self::herault->name => 'Hérault',
self::illeetvilaine->name => 'Ille-et-vilaine',
self::indre->name => 'Indre',
self::indreetloire->name => 'Indre-et-loire',
self::isere->name => 'Isère',
self::jura->name => 'Jura',
self::landes->name => 'Landes',
self::loiretcher->name => 'Loir-et-cher',
self::loire->name => 'Loire',
self::hauteloire->name => 'Haute-loire',
self::loireatlantique->name => 'Loire-atlantique',
self::loiret->name => 'Loiret',
self::lot->name => 'Lot',
self::lotetgaronne->name => 'Lot-et-garonne',
self::lozere->name => 'Lozère',
self::maineetloire->name => 'Maine-et-loire',
self::manche->name => 'Manche',
self::marne->name => 'Marne',
self::hautemarne->name => 'Haute-marne',
self::mayenne->name => 'Mayenne',
self::meurtheetmoselle->name => 'Meurthe-et-moselle',
self::meuse->name => 'Meuse',
self::morbihan->name => 'Morbihan',
self::moselle->name => 'Moselle',
self::nievre->name => 'Nièvre',
self::nord->name => 'Nord',
self::oise->name => 'Oise',
self::orne->name => 'Orne',
self::pasdecalais->name => 'Pas-de-calais',
self::puydedome->name => 'Puy-de-dôme',
self::pyreneesatlantiques->name => 'Pyrénées-atlantiques',
self::hautespyrenees->name => 'Hautes-Pyrénées',
self::pyreneesorientales->name => 'Pyrénées-orientales',
self::basrhin->name => 'Bas-rhin',
self::hautrhin->name => 'Haut-rhin',
self::rhone->name => 'Rhône',
self::hautesaone->name => 'Haute-saône',
self::saoneetloire->name => 'Saône-et-loire',
self::sarthe->name => 'Sarthe',
self::savoie->name => 'Savoie',
self::hautesavoie->name => 'Haute-savoie',
self::paris->name => 'Paris',
self::seinemaritime->name => 'Seine-maritime',
self::seineetmarne->name => 'Seine-et-marne',
self::yvelines->name => 'Yvelines',
self::deuxsevres->name => 'Deux-sèvres',
self::somme->name => 'Somme',
self::tarn->name => 'Tarn',
self::tarnetgaronne->name => 'Tarn-et-Garonne',
self::var->name => 'Var',
self::vaucluse->name => 'Vaucluse',
self::vendee->name => 'Vendée',
self::vienne->name => 'Vienne',
self::hautevienne->name => 'Haute-vienne',
self::vosges->name => 'Vosges',
self::yonne->name => 'Yonne',
self::territoiredebelfort->name => 'Territoire de belfort',
self::essonne->name => 'Essonne',
self::hautsdeseine->name => 'Hauts-de-seine',
self::seinesaintdenis->name => 'Seine-Saint-Denis',
self::valdemarne->name => 'Val-de-marne',
self::valdoise->name => 'Val-d\'Oise',
self::guadeloupe->name => 'Guadeloupe',
self::martinique->name => 'Martinique',
self::guyane->name => 'Guyane',
self::lareunion->name => 'La réunion',
self::mayotte->name => 'Mayotte'
];
}

View file

@ -1,54 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self none()
* @method static self pending()
* @method static self no()
* @method static self yes()
*/
final class EleveurOcbStatus extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'none' => 0,
'pending' => 1,
'no' => 2,
'yes' => 3
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'none' => 'Non',
'pending' => 'En attente',
'no' => 'Réfusé',
'yes' => 'Valide'
];
}
/**
* Output the value as a string
*
* @return string
*/
public function __toString(): string
{
return (string)$this->label;
}
}

View file

@ -1,47 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self bloc1()
* @method static self bloc2()
* @method static self bloc3()
* @method static self bloc4()
* @method static self bloc5()
*/
final class EngagementBlocType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'bloc1' => 0,
'bloc2' => 1,
'bloc3' => 2,
'bloc4' => 3,
'bloc5' => 4
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'bloc1' => __('Bloc 1'),
'bloc2' => __('Bloc 2 (mise en avant)'),
'bloc3' => __('Bloc 3'),
'bloc4' => __('Bloc 4 (bloc 3 inversé)'),
'bloc5' => __('Bloc 5 (info horizontale)')
];
}
}

View file

@ -1,38 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self header()
* @method static self article()
*/
final class EngagementType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'header' => 0,
'article' => 1
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'header' => __('Entête'),
'article' => __('Article')
];
}
}

View file

@ -1,25 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self portrait()
* @method static self ocbbreeder()
*/
final class GMapDataType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'portrait' => 0,
'ocbbreeder' => 1
];
}
}

View file

@ -0,0 +1,27 @@
<?php
namespace App\Enums\Games;
use App\Traits\Enums\BaseEnum;
enum GameForAge: int
{
use BaseEnum;
case from3To6 = 3;
case from6To9 = 6;
case from9To12 = 9;
case from12AndMore = 12;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::from3To6->name => '3 à 6 ans',
self::from6To9->name => '6 à 9 ans',
self::from9To12->name => '9 à 12 ans',
self::from12AndMore->name => '12 ans et plus',
];
}

View file

@ -0,0 +1,128 @@
<?php
namespace App\Enums\Games;
use App\Traits\Enums\BaseEnum;
use Illuminate\Support\Facades\Vite;
enum GamePointLevel: int
{
use BaseEnum;
case egg = 1;
case hatchedEgg = 2;
case chick = 3;
case hen = 4;
case chicken = 5;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::egg->name => 'oeuf',
self::hatchedEgg->name => 'oeuf éclos',
self::chick->name => 'poussin',
self::hen->name => 'poule',
self::chicken->name => 'poulet',
];
/**
* Point levels definition.
*/
private const LEVELS = [
self::egg->name => 0,
self::hatchedEgg->name => 50,
self::chick->name => 130,
self::hen->name => 230,
self::chicken->name => 1000,
];
/**
* Get Level
*
* @return integer
*/
public function level(): int
{
return self::LEVELS[$this->name];
}
/**
* Get picture
*
* @return string
*/
public function picture(): string
{
return Vite::asset("resources/assets/images/club/game-points/{$this->name()}.png");
}
/**
* Get enum Levels
*
* @return array<integer>
*/
public static function toLevels(): array
{
return self::LEVELS;
}
/**
* Get Level from point value
*
* @param integer $points
* @return \App\Enums\Games\GamePointLevel
*/
public static function fromPoints(int $points): self
{
$levels = array_reverse(self::all());
foreach ($levels as $level) {
if ($points >= $level->level()) {
return $level;
}
}
// * This should not happen while egg level is 0
return self::egg;
}
/**
* Next Level
*
* @param integer $points
* @return \App\Enums\Games\GamePointLevel|null
*/
public static function fromPointsNextLevel(int $points): self|null
{
$currentLevel = self::fromPoints($points);
return collect(self::all())
->filter(fn ($level) => $level->level() > $currentLevel->level())
->first();
}
/**
* Percent from points
*
* @param integer $points
* @return float
*/
public static function percentFromPoints(int $points): float
{
$levels = collect(self::toValues());
$level = self::fromPoints($points);
$nextLevel = self::fromPointsNextLevel($points);
if (!$nextLevel) {
return 100;
}
// * Bars between 2 levels
$ratio = 4;
$percentBetween2Levels = 100 / ($levels->count() - 1);
$adjustment = $percentBetween2Levels *
($nextLevel->level() - $points) / ($nextLevel->level() - $level->level());
return round((($level->value() * 100) / $levels->last()) + $percentBetween2Levels - $adjustment);
}
}

View file

@ -1,44 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self actu()
* @method static self rsm()
* @method static self poultryPage()
* @method static self breedingPage()
*/
final class GeneralConfigType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'actu' => 1,
'rsm' => 2,
'poultryPage' => 3,
'breedingPage' => 4
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'actu' => __('Actualité'),
'rsm' => __('RSM Block'),
'poultryPage' => __('Pages Volaille'),
'breedingPage' => __('Pages Élevage des volailles')
];
}
}

View file

@ -1,38 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self exact()
* @method static self commune()
*/
final class GeoType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'exact' => 0,
'commune' => 1
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'exact' => __('Exacte'),
'commune' => __('Code commune')
];
}
}

View file

@ -2,43 +2,26 @@
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
use App\Traits\Enums\BaseEnum;
/**
* @method static self boolean()
* @method static self image()
* @method static self string()
* @method static self text()
* html autorisé
* @method static self url()
* @method static self imageArray()
* @method static self labelArray()
* @method static self dropdownArray()
* html autorisé
* @method static self miniblocArray()
* html autorisé
* @method static self videoVimeo()
*/
final class InputType extends BaseEnumRoutable
enum InputType: int
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'boolean' => 0,
'image' => 1,
'string' => 2,
'text' => 3,
'url' => 4,
'imageArray' => 5,
'labelArray' => 6,
'dropdownArray' => 7,
'miniblocArray' => 8,
'videoVimeo' => 9
];
}
use BaseEnum;
case boolean = 1;
case dropdownArray = 2;
case email = 3;
case image = 4;
case imageArray = 5;
case labelArray = 6;
case miniblocArray = 7;
case number = 8;
case selectEnum = 9;
case password = 10;
case string = 11;
case text = 12;
case url = 13;
case videoVimeo = 14;
case videoYoutube = 15;
case video = 16;
}

View file

@ -1,17 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self debug()
* @method static self log()
* @method static self warning()
* @method static self info()
* @method static self error()
* @method static self critical()
*/
final class LogType extends BaseEnumRoutable
{
}

View file

@ -1,63 +0,0 @@
<?php
namespace App\Enums\Mercanet;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self ok()
* Situation normale suivie du processus normal d'affichage des pages de paiement.
* @method static self invalidIds()
* L’identifiant commerçant ou le contrat acquéreur sont invalides.
* @method static self invalidParameters()
* Les paramètres de la transaction sont invalides. Vérifiez les paramètres de la requête.
* @method static self canceled()
* Transaction annulée
* @method static self invalidRequestFormat()
* Le format de la requête est invalide.
* @method static self securityIssue()
* Problème de sécurité, par ex. le sceau calculé est incorrect.
* @method static self transactionAlreadyExists()
* La transaction existe déjà.
* @method static self expired()
* La transaction a expiré
* @method static self unreachableService()
* Service temporairement indisponible
* @method static self internalIssue()
* (interne à la classe) = Pb appel cUrl
*/
final class PaymentResponse extends BaseEnumRoutable
{
protected static function values(): array
{
return [
'ok' => '00',
'invalidIds' => '03',
'invalidParameters' => '12',
'canceled' => '17',
'invalidRequestFormat' => '30',
'securityIssue' => '34',
'transactionAlreadyExists' => '94',
'expired' => '97',
'unreachableService' => '99',
'internalIssue' => '500'
];
}
// phpcs:disable Generic.Files.LineLength.TooLong
protected static function labels(): array
{
return [
'ok' => 'Situation normale suivie du processus normal d\'affichage des pages de paiement.',
'invalidIds' => 'L’identifiant commerçant ou le contrat acquéreur sont invalides.',
'invalidParameters' => 'Les paramètres de la transaction sont invalides. Vérifiez les paramètres de la requête.',
'canceled' => 'Transaction annulée',
'invalidRequestFormat' => 'Le format de la requête est invalide.',
'securityIssue' => 'Problème de sécurité, par ex. le sceau calculé est incorrect.',
'transactionAlreadyExists' => 'La transaction existe déjà.',
'expired' => 'Délais expiré',
'unreachableService' => 'Service temporairement indisponible',
'internalIssue' => 'Erreur interne, eg: probleme appel CURL'
];
}
}

View file

@ -1,58 +0,0 @@
<?php
namespace App\Enums\Mercanet;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self redirect()
* Ce cas doit être suivi de la redirection de l’utilisateur vers la page de paiement.
*
* @method static self requestError03()
* @method static self requestError12()
* @method static self requestError30()
* @method static self requestError34()
* Ces codes d’erreur indiquent que la requête comporte un problème qui doit être résolu.
* Le processus de paiement doit alors être interrompu.
*
* @method static self referenceAlreadyUsed()
* La référence de transaction a déjà été utilisée.
* Le commerçant doit réessayer avec une autre référence de transaction.
*
* @method static self serviceDisponibiltyIssue()
* Problème de disponibilité du service de paiement. Le commerçant doit essayer de renvoyer la requête.
* Il convient d’utiliser une nouvelle référence de transaction pour éviter un code de réponse 94.
*
* @method static self internalIssue()
* (interne à la classe) = Pb appel cUrl
*/
final class RedirectionStatusCode extends BaseEnumRoutable
{
protected static function values(): array
{
return [
'redirect' => 0,
'requestError03' => 3,
'requestError12' => 12,
'requestError30' => 30,
'requestError34' => 34,
'referenceAlreadyUsed' => 94,
'serviceDisponibiltyIssue' => 99,
'internalIssue' => 500
];
}
protected static function labels(): array
{
return [
'redirect' => 'Redirection Acceptée',
'requestError03' => 'Problème de request code 03',
'requestError12' => 'Problème de request code 12',
'requestError30' => 'Problème de request code 30',
'requestError34' => 'Problème de request code 34',
'referenceAlreadyUsed' => 'La référence de transaction à déja été utilisée',
'serviceDisponibiltyIssue' => 'Problème de disponibilité du service de paiement',
'internalIssue' => 'Erreur interne, eg: probleme appel CURL'
];
}
}

View file

@ -1,58 +0,0 @@
<?php
namespace App\Enums\Mercanet;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self accepted()
* Paiement accepté
* @method static self refused()
* Paiement refusé
* @method static self canceled()
* Paiement annulée
* @method static self fraud()
* Paiement refusé pour fraude
* @method static self maxReached()
* Paiement refusé pour nombre max essais atteint
* @method static self technicalIssue()
* Paiement refusé pour problème technique
* @method static self duplicate()
* Transaction dupliquée
* @method static self expired()
* Paiement expiré
* @method static self internalIssue()
* (interne à la classe) = Pb appel cUrl
*/
final class TransactionResponse extends BaseEnumRoutable
{
protected static function values(): array
{
return [
'accepted' => 00,
'refused' => 05,
'canceled' => 17,
'fraud' => 34,
'maxReached' => 75,
'technicalIssue' => 90,
'duplicate' => 94,
'expired' => 97,
'internalIssue' => 500
];
}
protected static function labels(): array
{
return [
'accepted' => 'Paiement accepté',
'refused' => 'Paiement refusé',
'canceled' => 'Paiement annulé',
'fraud' => 'Paiement refusé pour fraude',
'maxReached' => 'Paiement refusé pour nombre max essais atteint',
'technicalIssue' => 'Paiement refusé pour problème technique',
'duplicate' => 'Transaction dupliquée',
'expired' => 'Paiement expiré',
'internalIssue' => 'Erreur interne, eg: probleme appel CURL'
];
}
}

View file

@ -2,46 +2,28 @@
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
use App\Traits\Enums\BaseEnum;
/**
* @method static self all()
* @method static self reduction()
* @method static self recipe()
* @method static self info()
* @method static self message()
*/
final class NotificationType extends BaseEnumRoutable
enum NotificationType: int
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'all' => 1,
'reduction' => 2,
'recipe' => 3,
'info' => 4,
'message' => 5
];
}
use BaseEnum;
case all = 1;
case reduction = 2;
case recipe = 3;
case info = 4;
case message = 5;
/**
* Enum labels
* Optionnal labels definition.
*
* @return array
* @phpstan-ignore-next-line
*/
protected static function labels(): array
{
return [
'all' => __("Toutes les notifications"),
'reduction' => __("Les réductions"),
'recipe' => __("Les recettes"),
'info' => __("Les infos du club"),
'message' => __("Les message")
];
}
private const LABELS = [
self::all->name => 'Toutes les notifications',
self::reduction->name => 'Les réductions',
self::recipe->name => 'Les recettes',
self::info->name => 'Les infos du club',
self::message->name => 'Les messages',
];
}

View file

@ -1,52 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self bloc1()
* Text et dropdowns array
* @method static self bloc2()
* Text et label array
* @method static self bloc3()
* Big image et optional button
* @method static self bloc4()
* Big image et dropdowns array
* @method static self bloc5()
* Green encart
*/
final class NutritionBlocType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'bloc1' => 0,
'bloc2' => 1,
'bloc3' => 2,
'bloc4' => 3,
'bloc5' => 4
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'bloc1' => __('Bloc 1, (Text et dropdowns array)'),
'bloc2' => __('Bloc 2 (Text et label array)'),
'bloc3' => __('Bloc 3 (Big image et optional button'),
'bloc4' => __('Bloc 4 (Big image et dropdowns array)'),
'bloc5' => __('Bloc 5 (Green encart)')
];
}
}

View file

@ -1,38 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self poultry()
* @method static self quality()
*/
final class NutritionPageType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'poultry' => 0,
'quality' => 1
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'poultry' => __('Page volaille'),
'quality' => __('Page qualité nutrition')
];
}
}

View file

@ -1,38 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self rabbit()
* @method static self poultry()
*/
final class OCBType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'rabbit' => 1,
'poultry' => 2
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'rabbit' => __('Lapin'),
'poultry' => __('Volaille')
];
}
}

View file

@ -1,46 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self waiting()
* @method static self failed()
* @method static self waitingCheck()
* @method static self sentCheck()
* @method static self payed()
*/
final class OrderStatus extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'waiting' => 0,
'failed' => 1,
'payed' => 2,
'waitingCheck' => 3,
'sentCheck' => 4
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'waiting' => __('En attente'),
'failed' => __('Échec'),
'payed' => __('Réglée'),
'sentCheck' => __('Par chèque bancaire')
];
}
}

View file

@ -1,38 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self cb()
* @method static self check()
*/
final class OrderType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'cb' => 0,
'check' => 1
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'cb' => __('Carte Bancaire'),
'check' => __('Chèque')
];
}
}

View file

@ -0,0 +1,16 @@
<?php
namespace App\Enums\Pagination;
use App\Traits\Enums\BaseEnum;
enum ItemsPerPaginationEnum: int
{
use BaseEnum;
case five = 5;
case twelve = 12;
case twentyfive = 25;
case fifty = 50;
case onehundred = 100;
}

View file

@ -1,40 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self bloc1()
* Text seulement
* @method static self bloc2()
* Text et video
*/
final class PoultryBlocType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'bloc1' => 0,
'bloc2' => 1
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'bloc1' => __('Bloc 1, (Text seulement)'),
'bloc2' => __('Bloc 2 (Text et video)')
];
}
}

View file

@ -1,38 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self engage()
* @method static self tracable()
*/
final class PoultryPageType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'engage' => 0,
'tracable' => 1
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'engage' => __('Page eleveurs 100% engagés'),
'tracable' => __('Page production 100% tracable')
];
}
}

View file

@ -1,38 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self picture()
* @method static self video()
*/
final class PresentationType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'picture' => 0,
'video' => 1
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'picture' => __('Photo'),
'video' => __('Video'),
];
}
}

View file

@ -1,65 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self color1()
* @method static self color2()
* @method static self color3()
* @method static self color4()
* @method static self color5()
* @method static self color6()
* @method static self color7()
* @method static self color8()
* @method static self color9()
* @method static self color10()
* @method static self color11()
*/
final class RangeColor extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'color1' => 'color-1',
'color2' => 'color-2',
'color3' => 'color-3',
'color4' => 'color-4',
'color5' => 'color-5',
'color6' => 'color-6',
'color7' => 'color-7',
'color8' => 'color-8',
'color9' => 'color-9',
'color10' => 'color-10',
'color11' => 'color-11'
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'color1' => 'Couleur 1',
'color2' => 'Couleur 2',
'color3' => 'Couleur 3',
'color4' => 'Couleur 4',
'color5' => 'Couleur 5',
'color6' => 'Couleur 6',
'color7' => 'Couleur 7',
'color8' => 'Couleur 8',
'color9' => 'Couleur 9',
'color10' => 'Couleur 10',
'color11' => 'Couleur 11'
];
}
}

View file

@ -1,54 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self veryeasy()
* @method static self easy()
* @method static self confirmed()
* @method static self expert()
*/
final class RecipeDifficulty extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'veryeasy' => 1,
'easy' => 2,
'confirmed' => 3,
'expert' => 4
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'veryeasy' => __('Très facile'),
'easy' => __('Facile'),
'confirmed' => __('Confirmé'),
'expert' => __('Expert'),
];
}
/**
* Output the value as a string
*
* @return string
*/
public function __toString(): string
{
return (string)$this->label;
}
}

View file

@ -1,46 +0,0 @@
<?php
namespace App\Enums;
use Illuminate\Support\Str;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self range()
* @method static self consumption()
* @method static self cooking()
* @method static self preparation()
*/
final class RecipeFilter extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
$labels = self::labels();
return [
'range' => Str::slug($labels['range']),
'consumption' => Str::slug($labels['consumption']),
'cooking' => Str::slug($labels['cooking']),
'preparation' => Str::slug($labels['preparation'])
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'range' => __('Gamme'),
'consumption' => __('Moment de consommation'),
'cooking' => __('Temps de cuisson'),
'preparation' => __('Temps de préparation')
];
}
}

View file

@ -1,43 +0,0 @@
<?php
namespace App\Enums;
use Illuminate\Support\Str;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self less15()
* @method static self between15and30()
* @method static self more30()
*/
final class RecipeFilterTimes extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
$labels = self::labels();
return [
'less15' => Str::slug($labels['less15']),
'between15and30' => Str::slug($labels['between15and30']),
'more30' => Str::slug($labels['more30']),
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'less15' => __('Moins de 15 minutes'),
'between15and30' => __('Entre 15 et 30 minutes'),
'more30' => __('Plus de 30 minutes'),
];
}
}

View file

@ -1,38 +0,0 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self classic()
* @method static self video()
*/
final class RecipeType extends BaseEnumRoutable
{
/**
* Enum values
*
* @return array
*/
protected static function values(): array
{
return [
'classic' => 0,
'video' => 1
];
}
/**
* Enum labels
*
* @return array
*/
protected static function labels(): array
{
return [
'classic' => __('Classic'),
'video' => __('Video')
];
}
}

View file

@ -0,0 +1,30 @@
<?php
namespace App\Enums\Recipes;
use App\Traits\Enums\BaseEnum;
/**
* Will caracterise the setting row (ID)
*/
enum DifficultyEnum: int
{
use BaseEnum;
case very_easy = 1;
case easy = 2;
case confirmed = 3;
case expert = 4;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::very_easy->name => 'Très facile',
self::easy->name => 'Facile',
self::confirmed->name => 'Confirmé',
self::expert->name => 'Expert',
];
}

View file

@ -0,0 +1,63 @@
<?php
namespace App\Enums\Settings;
use App\Traits\Enums\BaseEnum;
enum MenuNodeType: int
{
use BaseEnum;
case ourProducts = 1;
case ourRecipes = 2;
case ourCommitments = 3;
case siteLogo = 4;
case breedings = 5;
case ourBrand = 6;
case recruitment = 7;
case news = 8;
case link = 9;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::ourProducts->name => 'Nos produits',
self::ourRecipes->name => 'Nos recettes',
self::ourCommitments->name => 'Nos engagments',
self::siteLogo->name => 'Logo du site',
self::breedings->name => 'Les élevages',
self::ourBrand->name => 'Notre marque',
self::recruitment->name => 'Recrutement',
self::news->name => 'Actus',
self::link->name => 'Lien',
];
/**
* Optionnal labels definition.
*/
private const ROUTENAMES = [
self::ourProducts->name => 'fo.products.index',
self::ourRecipes->name => 'fo.recipes.index',
self::ourCommitments->name => 'fo.commitments.brand',
self::siteLogo->name => 'fo.home.show',
self::breedings->name => 'fo.breeding.index',
self::ourBrand->name => 'fo.brand.story',
self::recruitment->name => 'fo.recruitment.show',
self::news->name => 'fo.news.index',
self::link->name => '',
];
/**
* Get Class
*
* @return string|null
*/
public function routeName(): ?string
{
return !empty(self::ROUTENAMES[$this->name]) ?
self::ROUTENAMES[$this->name] : null;
}
}

View file

@ -0,0 +1,30 @@
<?php
namespace App\Enums\Settings;
use App\Traits\Enums\BaseEnum;
/**
* Will caracterise the setting row (ID)
*/
enum SettingsType: int
{
use BaseEnum;
case mainMenu = 1;
case hotNews = 2;
case offersCount = 3;
case breederMapComponent = 4;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::mainMenu->name => 'Menu principal',
self::hotNews->name => 'Infos chaudes',
self::offersCount->name => 'Total des offres de la marque',
self::breederMapComponent->name => 'Composant \'Carte des éleveurs\'',
];
}

View file

@ -0,0 +1,72 @@
<?php
namespace App\Enums;
use App\Traits\Enums\BaseEnum;
enum StaticPageType: int
{
use BaseEnum;
case contact = 1;
case legals = 2;
case confidentiality = 3;
case recruitment = 4;
case story = 5;
case saga = 6;
case recipes = 7;
case recipe = 8;
case products = 9;
case product = 10;
case home = 11;
case selling = 12;
case accessibility = 13;
case news = 14;
case social = 15;
case breedingPoultry = 16;
case breedingJob = 17;
case breedingFood = 18;
case breedingHealth = 19;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::contact->name => 'Contact',
self::legals->name => 'Mentions légales et CGU',
self::confidentiality->name => 'Confidentialité',
self::recruitment->name => 'Recrutement',
self::story->name => 'Qui sommes-nous ?',
self::saga->name => 'Saga publicitaire',
self::recipes->name => 'Recettes',
self::recipe->name => 'Recette',
self::products->name => 'Produits',
self::product->name => 'Produit',
self::home->name => 'Accueil',
self::selling->name => 'Conditions générales de vente',
self::accessibility->name => 'Accessibilité',
self::breedingPoultry->name => 'L\'élevage des volailles',
self::breedingJob->name => 'Le métier d\'éleveur de volailles',
self::breedingFood->name => 'L\'alimentation des volailles',
self::breedingHealth->name => 'La santé des volailles',
self::news->name => 'Actualités',
self::social->name => 'Réseaux sociaux',
];
/**
* Get all breeding pages.
*
* @return array
*/
public static function getBreedingPages(): array
{
return [
self::breedingPoultry,
self::breedingJob,
self::breedingFood,
self::breedingHealth,
];
}
}

View file

@ -0,0 +1,25 @@
<?php
namespace App\Enums\Theme;
use App\Traits\Enums\BaseEnum;
enum BootstrapThemeEnum: int
{
use BaseEnum;
case light = 1;
case dark = 2;
case beige = 3;
/**
* Optionnal labels definition
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::light->name => 'enums.bootstrap-theme.light',
self::dark->name => 'enums.bootstrap-theme.dark',
self::beige->name => 'enums.bootstrap-theme.beige',
];
}

View file

@ -0,0 +1,25 @@
<?php
namespace App\Enums\Users;
use App\Traits\Enums\BaseEnum;
enum RoleEnum: int
{
use BaseEnum;
case conceptor = 1;
case admin = 2;
case visitor = 99;
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::conceptor->name => 'enums.user-role.conceptor',
self::admin->name => 'enums.user-role.admin',
self::visitor->name => 'enums.user-role.visitor',
];
}

View file

@ -2,6 +2,9 @@
namespace App\Events;
use App\Enums\NotificationType;
use App\Interfaces\Notifiable;
use App\Models\Customer;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
@ -12,24 +15,19 @@ class NewNotification
use InteractsWithSockets;
use SerializesModels;
public $type;
public $content;
public $model;
public $customer;
/**
* Create a new event instance.
*
* @return void
* @param \App\Enums\NotificationType $type
* @param string $content
* @param \App\Interfaces\Notifiable $model
* @param \App\Models\Customer|null $customer
*/
public function __construct($type, $content, $model, $customer = null)
{
$this->type = $type;
$this->content = $content;
$this->model = $model;
$this->customer = $customer;
public function __construct(
public NotificationType $type,
public string $content,
public Notifiable $model,
public Customer|null $customer = null
) {
}
}

View file

@ -1,15 +0,0 @@
<?php
namespace App\Exceptions;
use Exception;
/**
* This class Exception is used to skip a row import from
* database migration (2016 -> 2020)
*
* @author Jérémy Munsch <jeremy.munsch@ldc.fr>
*/
class AbortContactMailer extends Exception
{
}

View file

@ -1,9 +0,0 @@
<?php
namespace App\Exceptions;
use Exception;
class AbortCsvImportException extends Exception
{
}

View file

@ -1,15 +0,0 @@
<?php
namespace App\Exceptions;
use Exception;
/**
* This class Exception is used to skip a row import from
* database migration (2016 -> 2020)
*
* @author Jérémy Munsch <jeremy.munsch@ldc.fr>
*/
class AbortRowImportException extends Exception
{
}

View file

@ -1,9 +0,0 @@
<?php
namespace App\Exceptions;
use Exception;
class AbortXmlImportException extends Exception
{
}

View file

@ -1,15 +0,0 @@
<?php
namespace App\Exceptions;
use Exception;
/**
* This class Exception is used in CB payement process
* database migration (2016 -> 2020)
*
* @author Jérémy Munsch <jeremy.munsch@ldc.fr>
*/
class CBPayementError extends Exception
{
}

Some files were not shown because too many files have changed in this diff Show more