From 537f750f99bf5ebf275457b4d7b22700e9402a70 Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Sun, 22 Nov 2020 12:37:36 +0000 Subject: [PATCH 01/12] Added Schema Change for Foodbank/Charity --- database/factories/CollectionPointFactory.php | 2 + ...ities_and_timings_to_collection_points.php | 37 +++++++++++++++++++ ...2_120614_add_contact_info_to_charities.php | 37 +++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 database/migrations/2020_11_22_120405_add_quanities_and_timings_to_collection_points.php create mode 100644 database/migrations/2020_11_22_120614_add_contact_info_to_charities.php diff --git a/database/factories/CollectionPointFactory.php b/database/factories/CollectionPointFactory.php index 3a6eead..d24ba58 100644 --- a/database/factories/CollectionPointFactory.php +++ b/database/factories/CollectionPointFactory.php @@ -16,6 +16,8 @@ 'city' => $faker->city, 'county' => $faker->county, 'post_code' => $faker->postcode, + "pick_up_time" => $faker->dateTime("+10 hours"), + "cut_off_point" => $faker->dateTime("+10 hours"), 'max_daily_capacity' => rand(50, 100), ]; }); diff --git a/database/migrations/2020_11_22_120405_add_quanities_and_timings_to_collection_points.php b/database/migrations/2020_11_22_120405_add_quanities_and_timings_to_collection_points.php new file mode 100644 index 0000000..6083268 --- /dev/null +++ b/database/migrations/2020_11_22_120405_add_quanities_and_timings_to_collection_points.php @@ -0,0 +1,37 @@ +integer('quantity_of_meals')->default(1); + $table->dateTime('pick_up_time'); + $table->dateTime("cut_off_point"); + $table->integer("set_quantity_per_person")->default(1); + $table->string("logo")->nullable(); + $table->string("unique_url")->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('collection_points', function (Blueprint $table) { + $table->dropColumn(['quantity_of_meals', 'pick_up_time', "cut_off_point", "set_quantity_per_person", "logo", "unique_url"]); + }); + } +} diff --git a/database/migrations/2020_11_22_120614_add_contact_info_to_charities.php b/database/migrations/2020_11_22_120614_add_contact_info_to_charities.php new file mode 100644 index 0000000..f2348ee --- /dev/null +++ b/database/migrations/2020_11_22_120614_add_contact_info_to_charities.php @@ -0,0 +1,37 @@ +string("company_website")->nullable(); + $table->string("contact_telephone")->nullable(); + $table->string("logo")->nullable(); + $table->string("personal_email")->nullable(); + $table->string("personal_number")->nullable(); + $table->boolean("has_food_hygiene_cert")->default(false); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('charities', function (Blueprint $table) { + $table->dropColumns(["company_website", "contact_telephone", "logo" ,"personal_email", "personal_number", "has_food_hygiene_cert"]); + }); + } +} From c5fd5119a37662296c96352955d04622db331bf4 Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Mon, 23 Nov 2020 10:04:16 +0000 Subject: [PATCH 02/12] added Meal Type + Days Open --- app/Models/CollectionPointDaysOpen.php | 18 ++++++++++ .../CollectionPointDietaryRequirements.php | 18 ++++++++++ app/Models/CollectionPointMealType.php | 18 ++++++++++ app/Models/DaysOpen.php | 10 ++++++ app/Models/DietaryRequirements.php | 10 ++++++ app/Models/MealType.php | 10 ++++++ .../factories/DietaryRequirementsFactory.php | 12 +++++++ ...0_11_22_115513_create_days_opens_table.php | 32 ++++++++++++++++++ ...0_11_22_115539_create_meal_types_table.php | 32 ++++++++++++++++++ ...5608_create_dietary_requirements_table.php | 32 ++++++++++++++++++ ...eate_collection_point_days_opens_table.php | 33 +++++++++++++++++++ ...eate_collection_point_meal_types_table.php | 33 +++++++++++++++++++ ...ction_point_dietary_requirements_table.php | 33 +++++++++++++++++++ 13 files changed, 291 insertions(+) create mode 100644 app/Models/CollectionPointDaysOpen.php create mode 100644 app/Models/CollectionPointDietaryRequirements.php create mode 100644 app/Models/CollectionPointMealType.php create mode 100644 app/Models/DaysOpen.php create mode 100644 app/Models/DietaryRequirements.php create mode 100644 app/Models/MealType.php create mode 100644 database/factories/DietaryRequirementsFactory.php create mode 100644 database/migrations/2020_11_22_115513_create_days_opens_table.php create mode 100644 database/migrations/2020_11_22_115539_create_meal_types_table.php create mode 100644 database/migrations/2020_11_22_115608_create_dietary_requirements_table.php create mode 100644 database/migrations/2020_11_22_121705_create_collection_point_days_opens_table.php create mode 100644 database/migrations/2020_11_22_121744_create_collection_point_meal_types_table.php create mode 100644 database/migrations/2020_11_22_121800_create_collection_point_dietary_requirements_table.php diff --git a/app/Models/CollectionPointDaysOpen.php b/app/Models/CollectionPointDaysOpen.php new file mode 100644 index 0000000..775be31 --- /dev/null +++ b/app/Models/CollectionPointDaysOpen.php @@ -0,0 +1,18 @@ +belongsTo(CollectionPoint::class); + } + + public function days_open() + { + return $this->hasMany(DaysOpen::class); + } +} diff --git a/app/Models/CollectionPointDietaryRequirements.php b/app/Models/CollectionPointDietaryRequirements.php new file mode 100644 index 0000000..4074190 --- /dev/null +++ b/app/Models/CollectionPointDietaryRequirements.php @@ -0,0 +1,18 @@ +belongsTo(CollectionPoint::class); + } + + public function dietary_requirements() + { + return $this->hasMany(DietaryRequirements::class); + } +} diff --git a/app/Models/CollectionPointMealType.php b/app/Models/CollectionPointMealType.php new file mode 100644 index 0000000..db4c4f7 --- /dev/null +++ b/app/Models/CollectionPointMealType.php @@ -0,0 +1,18 @@ +belongsTo(CollectionPoint::class); + } + + public function meal_types() + { + return $this->hasMany(MealType::class); + } +} diff --git a/app/Models/DaysOpen.php b/app/Models/DaysOpen.php new file mode 100644 index 0000000..589f9f8 --- /dev/null +++ b/app/Models/DaysOpen.php @@ -0,0 +1,10 @@ +define(DietaryRequirements::class, function (Faker $faker) { + return [ + "name" => "halal" + ]; +}); diff --git a/database/migrations/2020_11_22_115513_create_days_opens_table.php b/database/migrations/2020_11_22_115513_create_days_opens_table.php new file mode 100644 index 0000000..ad44681 --- /dev/null +++ b/database/migrations/2020_11_22_115513_create_days_opens_table.php @@ -0,0 +1,32 @@ +id(); + $table->string("name"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('days_opens'); + } +} diff --git a/database/migrations/2020_11_22_115539_create_meal_types_table.php b/database/migrations/2020_11_22_115539_create_meal_types_table.php new file mode 100644 index 0000000..193d4cd --- /dev/null +++ b/database/migrations/2020_11_22_115539_create_meal_types_table.php @@ -0,0 +1,32 @@ +id(); + $table->string("name"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('meal_types'); + } +} diff --git a/database/migrations/2020_11_22_115608_create_dietary_requirements_table.php b/database/migrations/2020_11_22_115608_create_dietary_requirements_table.php new file mode 100644 index 0000000..b05fa79 --- /dev/null +++ b/database/migrations/2020_11_22_115608_create_dietary_requirements_table.php @@ -0,0 +1,32 @@ +id(); + $table->string("name"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('dietary_requirements'); + } +} diff --git a/database/migrations/2020_11_22_121705_create_collection_point_days_opens_table.php b/database/migrations/2020_11_22_121705_create_collection_point_days_opens_table.php new file mode 100644 index 0000000..5d23f3c --- /dev/null +++ b/database/migrations/2020_11_22_121705_create_collection_point_days_opens_table.php @@ -0,0 +1,33 @@ +id(); + $table->unsignedBigInteger("collection_point_id"); + $table->unsignedBigInteger("days_open_id"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('collection_point_days_opens'); + } +} diff --git a/database/migrations/2020_11_22_121744_create_collection_point_meal_types_table.php b/database/migrations/2020_11_22_121744_create_collection_point_meal_types_table.php new file mode 100644 index 0000000..5db51c0 --- /dev/null +++ b/database/migrations/2020_11_22_121744_create_collection_point_meal_types_table.php @@ -0,0 +1,33 @@ +id(); + $table->unsignedBigInteger("collection_point_id"); + $table->unsignedBigInteger("meal_type_id"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('collection_point_meal_types'); + } +} diff --git a/database/migrations/2020_11_22_121800_create_collection_point_dietary_requirements_table.php b/database/migrations/2020_11_22_121800_create_collection_point_dietary_requirements_table.php new file mode 100644 index 0000000..d4f7708 --- /dev/null +++ b/database/migrations/2020_11_22_121800_create_collection_point_dietary_requirements_table.php @@ -0,0 +1,33 @@ +id(); + $table->unsignedBigInteger("collection_point_id"); + $table->unsignedBigInteger("dietary_requirement_id"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('collection_point_dietary_requirements'); + } +} From 25c617ed4dd3de70aa273f3048d5cf22aa816d8b Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Mon, 23 Nov 2020 10:04:56 +0000 Subject: [PATCH 03/12] added new feilds to Charity Models Fillable Columns --- app/Models/Charity.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/Models/Charity.php b/app/Models/Charity.php index f7c1872..2fb9bf3 100644 --- a/app/Models/Charity.php +++ b/app/Models/Charity.php @@ -14,6 +14,12 @@ class Charity extends Model 'name', 'registration_number', 'max_delivery_capacity', + 'company_website', + 'contact_telephone', + 'personal_email', + 'personal_number', + 'has_food_hygiene_cert', + 'logo' ]; protected $casts = [ From 6887935c6a0d3474c6c62b43ed383385f5eba442 Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Mon, 23 Nov 2020 20:59:50 +0000 Subject: [PATCH 04/12] added routes and logic for updating the Charity/Foodbank --- app/Services/Charity/CharityService.php | 11 +++++++++++ routes/api.php | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/Services/Charity/CharityService.php b/app/Services/Charity/CharityService.php index f27d3d6..590d0a9 100644 --- a/app/Services/Charity/CharityService.php +++ b/app/Services/Charity/CharityService.php @@ -15,6 +15,11 @@ public function get() return $user->charities->first(); } + public function show($id) + { + return Charity::findorFail($id); + } + public function create($data = []) { $charity = Charity::create([ @@ -34,6 +39,12 @@ public function update(Charity $charity, $data) 'name' => $data['name'] ?? $charity->name, 'registration_number' => $data['registration_number'] ?? $charity->registration_number, 'max_delivery_capacity' => $data['max_delivery_capacity'] ?? $charity->max_delivery_capacity, + 'company_website' => $data['company_website'] ?? $charity->company_website, + 'contact_telephone' => $data['contact_telephone'] ?? $charity->contact_telephone, + 'personal_email' => $data['personal_email'] ?? $charity->personal_email, + 'personal_number' => $data['personal_number'] ?? $charity->personal_number, + 'has_food_hygiene_cert' => $data['has_food_hygiene_cert'] ?? $charity->has_food_hygiene_cert, + 'logo' => $data['logo'] ?? $charity->logo, ]); event(new Updated($charity)); diff --git a/routes/api.php b/routes/api.php index 3914447..2eb859d 100644 --- a/routes/api.php +++ b/routes/api.php @@ -39,8 +39,8 @@ // Charity Users API Route::group(['prefix' => 'charity', 'name' => 'charity.', 'namespace' => 'Charity'], function () { Route::get('/', 'CharityController@index'); - Route::post('/', 'CharityController@update'); - + Route::post('/{id}', 'CharityController@update'); + Route::get('/{id}', 'CharityController@show'); Route::get('/orders', 'OrderController@index'); }); From 743744053c10247fdb4aaae800627727f90c3f89 Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Mon, 23 Nov 2020 21:01:27 +0000 Subject: [PATCH 05/12] Update Chartiy Service --- .../Controllers/API/Charity/CharityController.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/API/Charity/CharityController.php b/app/Http/Controllers/API/Charity/CharityController.php index e4c3d53..faffabc 100644 --- a/app/Http/Controllers/API/Charity/CharityController.php +++ b/app/Http/Controllers/API/Charity/CharityController.php @@ -19,10 +19,18 @@ public function index(AuthenticatedRequest $request, CharityService $charityServ ]); } - public function update(UpdateRequest $request, CharityService $charityService) + public function show($id, AuthenticatedRequest $request, CharityService $charityPointService) { + return response()->json([ + 'status' => 'success', + 'data' => [ + 'charity' => $charityPointService->show($id) + ] + ]); + } + + public function update(Charity $id, AuthenticatedRequest $request, CharityService $CharityService) { - $charity = auth()->user()->charity(); - $charity = $charityService->update($charity, $charityService->getFillable($request)); + $charity = $CharityService->update($id, $CharityService->getFillable($request)); return response()->json([ 'status' => 'success', From fd25517474d6506f7fff0f0420029f6ba969a221 Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Mon, 23 Nov 2020 21:01:50 +0000 Subject: [PATCH 06/12] added Meal Details and Get routes for it --- .../CollectionPointController.php | 22 +++++++++++ .../API/CollectionPointController.php | 35 +++++++++++++++++ app/Models/CollectionPoint.php | 5 ++- app/Models/MealDetails.php | 16 ++++++++ .../CollectionPointService.php | 22 +++++++++++ ...11_23_183811_create_meal_details_table.php | 39 +++++++++++++++++++ routes/api.php | 2 + 7 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 app/Models/MealDetails.php create mode 100644 database/migrations/2020_11_23_183811_create_meal_details_table.php diff --git a/app/Http/Controllers/API/CollectionPoint/CollectionPointController.php b/app/Http/Controllers/API/CollectionPoint/CollectionPointController.php index 831e4f7..e5b84cd 100644 --- a/app/Http/Controllers/API/CollectionPoint/CollectionPointController.php +++ b/app/Http/Controllers/API/CollectionPoint/CollectionPointController.php @@ -6,6 +6,7 @@ use App\Http\Requests\API\CollectionPoint\UpdateRequest; use App\Services\CollectionPoint\CollectionPointService; use App\Http\Requests\API\CollectionPoint\AuthenticatedRequest; +use App\Models\CollectionPoint; class CollectionPointController extends Controller { @@ -19,6 +20,27 @@ public function index(AuthenticatedRequest $request, CollectionPointService $col ]); } + public function getMealDetails(CollectionPoint $collectionPoint, AuthenticatedRequest $request, CollectionPointService $collectionPointService) { + + return response()->json([ + 'status' => 'success', + 'data' => [ + 'collection_point' => $collectionPointService->getMealDetails($collectionPoint) + ] + ]); + } + + public function updateMealDetails (CollectionPoint $collection_point_id, CollectionPointService $collectionPointService) { + + + return response()->json([ + 'status' => 'success', + 'data' => [ + 'collection_point' => $collectionPointService->get($id) + ] + ]); + } + public function update(UpdateRequest $request, CollectionPointService $collectionPointService) { $collectionPoint = auth()->user()->collectionPoint(); diff --git a/app/Http/Controllers/API/CollectionPointController.php b/app/Http/Controllers/API/CollectionPointController.php index 4417523..16972f4 100644 --- a/app/Http/Controllers/API/CollectionPointController.php +++ b/app/Http/Controllers/API/CollectionPointController.php @@ -4,8 +4,12 @@ use App\Http\Controllers\Controller; use App\Services\User\CollectionPointService; +use App\Services\CollectionPoint\CollectionPointService as MainCollectionPointService; use App\Http\Requests\API\User\AuthenticatedRequest; use App\Services\All\PostcodeService; +use App\Models\CollectionPoint; +use App\Models\MealDetails; +use Illuminate\Http\Response; class CollectionPointController extends Controller { @@ -61,6 +65,37 @@ public function show($id, AuthenticatedRequest $request, CollectionPointService ]); } + public function getMealDetails($id, AuthenticatedRequest $request, MainCollectionPointService $collectionPointService) { + + return response()->json([ + 'status' => 'success', + 'data' => [ + 'collection_point' => $collectionPointService->getMealDetails($id) + ] + ]); + } + + public function updateMealDetails ($id, AuthenticatedRequest $request, MainCollectionPointService $collectionPointService) { + + foreach ($request->all() as $value) { + if($value["type_of_meal"] !== MealDetails::HOT_FOOD && $value["type_of_meal"] !== MealDetails::HOME_ESSENTIALS && $value["type_of_meal"] !== MealDetails::SCHOOL_MEAL ) { + return response()->json([ + 'status' => 'error', + 'data' => [], + "message" => "Provide valid type_of_meal, valid type_of_meal are: " . MealDetails::HOT_FOOD . ", " . MealDetails::SCHOOL_MEAL . ", " . MealDetails::HOME_ESSENTIALS + ], Response::HTTP_BAD_REQUEST ); + } + } + + + return response()->json([ + 'status' => 'success', + 'data' => [ + 'collection_point' => $collectionPointService->updateMealDetails($id, $request->all()) + ] + ]); + } + public function canDeliverToLocation($collectionPointId, AuthenticatedRequest $request, CollectionPointService $collectionPointService, PostcodeService $postcodeService) { $postCode = $request->input('postcode'); diff --git a/app/Models/CollectionPoint.php b/app/Models/CollectionPoint.php index 9f4576c..9895025 100644 --- a/app/Models/CollectionPoint.php +++ b/app/Models/CollectionPoint.php @@ -93,7 +93,10 @@ public function notifyAllUsers($notification) { foreach ($this->collectionPointUsers as $collectionPointUser) { $collectionPointUser->user->notify($notification); - } + }; + } + public function mealDetails() { + return $this->hasMany(MealDetails::class, "collection_point_id"); } public function smsAllUsers(SmsMessage $smsMessage) diff --git a/app/Models/MealDetails.php b/app/Models/MealDetails.php new file mode 100644 index 0000000..4e121d4 --- /dev/null +++ b/app/Models/MealDetails.php @@ -0,0 +1,16 @@ +belongsTo(Collection::class); + } +} diff --git a/app/Services/CollectionPoint/CollectionPointService.php b/app/Services/CollectionPoint/CollectionPointService.php index ce5a6a1..34ab8e5 100644 --- a/app/Services/CollectionPoint/CollectionPointService.php +++ b/app/Services/CollectionPoint/CollectionPointService.php @@ -5,6 +5,7 @@ use App\Models\CollectionPoint; use App\Events\CollectionPoint\Created; use App\Events\CollectionPoint\Updated; +use App\Models\MealDetails; class CollectionPointService { @@ -15,6 +16,27 @@ public function get() return $user->collectionPoints->first(); } + public function getMealDetails($id) { + $collectionPoint = CollectionPoint::findorFail((int) $id); + return $collectionPoint->mealDetails; + } + + public function updateMealDetails($id, $UpdatedMealDetails) { + + $collectionPoint = CollectionPoint::findorFail($id); + $mealDetails = $collectionPoint->mealDetails; + + foreach ($UpdatedMealDetails as $key => $details) { + if( $mealDetails->type_of_meal !== MealDetails::HOT_FOOD && $mealDetails->type_of_meal !== MealDetails::HOME_ESSENTIALS && $mealDetails->type_of_meal !== MealDetails::SCHOOL_MEAL) { + + } + + } + + return $collectionPoint; + } + + public function create($data) { $collectionPoint = CollectionPoint::create([ diff --git a/database/migrations/2020_11_23_183811_create_meal_details_table.php b/database/migrations/2020_11_23_183811_create_meal_details_table.php new file mode 100644 index 0000000..bde3ad0 --- /dev/null +++ b/database/migrations/2020_11_23_183811_create_meal_details_table.php @@ -0,0 +1,39 @@ +id(); + $table->unsignedBigInteger("collection_point_id"); + $table->text("type_of_meal"); + $table->integer("halal_qty"); + $table->integer("vegetarian_qty"); + $table->integer("vegan_qty"); + $table->integer("gluten_free_qty"); + $table->integer("nut_free_qty"); + $table->string("description"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('meal_details'); + } +} diff --git a/routes/api.php b/routes/api.php index 2eb859d..11474ff 100644 --- a/routes/api.php +++ b/routes/api.php @@ -62,6 +62,8 @@ Route::post('/collection-points/near-me', 'CollectionPointController@indexNearMe'); Route::get('/collection-points/{id}', 'CollectionPointController@show'); Route::get('/collection-points', 'CollectionPointController@index'); + Route::get('/collection-point/{collection_point_id}/meal-details', 'CollectionPointController@getMealDetails'); + Route::post('/collection-point/{collection_point_id}/meal-details', 'CollectionPointController@updateMealDetails'); Route::post('logout', 'AuthController@logout'); }); From 83bab0b2b65dd51f6be0bbf0da31243517524783 Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Sat, 5 Dec 2020 22:38:05 +0000 Subject: [PATCH 07/12] removed extra tables and relationships --- .../CollectionPointDietaryRequirements.php | 18 --------- app/Models/CollectionPointMealType.php | 18 --------- app/Models/MealDetails.php | 16 -------- ...eate_collection_point_meal_types_table.php | 33 ---------------- ...ction_point_dietary_requirements_table.php | 33 ---------------- ...11_23_183811_create_meal_details_table.php | 39 ------------------- 6 files changed, 157 deletions(-) delete mode 100644 app/Models/CollectionPointDietaryRequirements.php delete mode 100644 app/Models/CollectionPointMealType.php delete mode 100644 app/Models/MealDetails.php delete mode 100644 database/migrations/2020_11_22_121744_create_collection_point_meal_types_table.php delete mode 100644 database/migrations/2020_11_22_121800_create_collection_point_dietary_requirements_table.php delete mode 100644 database/migrations/2020_11_23_183811_create_meal_details_table.php diff --git a/app/Models/CollectionPointDietaryRequirements.php b/app/Models/CollectionPointDietaryRequirements.php deleted file mode 100644 index 4074190..0000000 --- a/app/Models/CollectionPointDietaryRequirements.php +++ /dev/null @@ -1,18 +0,0 @@ -belongsTo(CollectionPoint::class); - } - - public function dietary_requirements() - { - return $this->hasMany(DietaryRequirements::class); - } -} diff --git a/app/Models/CollectionPointMealType.php b/app/Models/CollectionPointMealType.php deleted file mode 100644 index db4c4f7..0000000 --- a/app/Models/CollectionPointMealType.php +++ /dev/null @@ -1,18 +0,0 @@ -belongsTo(CollectionPoint::class); - } - - public function meal_types() - { - return $this->hasMany(MealType::class); - } -} diff --git a/app/Models/MealDetails.php b/app/Models/MealDetails.php deleted file mode 100644 index 4e121d4..0000000 --- a/app/Models/MealDetails.php +++ /dev/null @@ -1,16 +0,0 @@ -belongsTo(Collection::class); - } -} diff --git a/database/migrations/2020_11_22_121744_create_collection_point_meal_types_table.php b/database/migrations/2020_11_22_121744_create_collection_point_meal_types_table.php deleted file mode 100644 index 5db51c0..0000000 --- a/database/migrations/2020_11_22_121744_create_collection_point_meal_types_table.php +++ /dev/null @@ -1,33 +0,0 @@ -id(); - $table->unsignedBigInteger("collection_point_id"); - $table->unsignedBigInteger("meal_type_id"); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('collection_point_meal_types'); - } -} diff --git a/database/migrations/2020_11_22_121800_create_collection_point_dietary_requirements_table.php b/database/migrations/2020_11_22_121800_create_collection_point_dietary_requirements_table.php deleted file mode 100644 index d4f7708..0000000 --- a/database/migrations/2020_11_22_121800_create_collection_point_dietary_requirements_table.php +++ /dev/null @@ -1,33 +0,0 @@ -id(); - $table->unsignedBigInteger("collection_point_id"); - $table->unsignedBigInteger("dietary_requirement_id"); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('collection_point_dietary_requirements'); - } -} diff --git a/database/migrations/2020_11_23_183811_create_meal_details_table.php b/database/migrations/2020_11_23_183811_create_meal_details_table.php deleted file mode 100644 index bde3ad0..0000000 --- a/database/migrations/2020_11_23_183811_create_meal_details_table.php +++ /dev/null @@ -1,39 +0,0 @@ -id(); - $table->unsignedBigInteger("collection_point_id"); - $table->text("type_of_meal"); - $table->integer("halal_qty"); - $table->integer("vegetarian_qty"); - $table->integer("vegan_qty"); - $table->integer("gluten_free_qty"); - $table->integer("nut_free_qty"); - $table->string("description"); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('meal_details'); - } -} From 46b081d65eba69bad696d52cebe5c66953e21c72 Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Sat, 5 Dec 2020 22:39:11 +0000 Subject: [PATCH 08/12] added image url for the icons for meal types and dietary requirements --- .../migrations/2020_11_22_115539_create_meal_types_table.php | 1 + .../2020_11_22_115608_create_dietary_requirements_table.php | 1 + 2 files changed, 2 insertions(+) diff --git a/database/migrations/2020_11_22_115539_create_meal_types_table.php b/database/migrations/2020_11_22_115539_create_meal_types_table.php index 193d4cd..de34df0 100644 --- a/database/migrations/2020_11_22_115539_create_meal_types_table.php +++ b/database/migrations/2020_11_22_115539_create_meal_types_table.php @@ -16,6 +16,7 @@ public function up() Schema::create('meal_types', function (Blueprint $table) { $table->id(); $table->string("name"); + $table->text("image_url"); $table->timestamps(); }); } diff --git a/database/migrations/2020_11_22_115608_create_dietary_requirements_table.php b/database/migrations/2020_11_22_115608_create_dietary_requirements_table.php index b05fa79..8363c68 100644 --- a/database/migrations/2020_11_22_115608_create_dietary_requirements_table.php +++ b/database/migrations/2020_11_22_115608_create_dietary_requirements_table.php @@ -16,6 +16,7 @@ public function up() Schema::create('dietary_requirements', function (Blueprint $table) { $table->id(); $table->string("name"); + $table->text("image_url"); $table->timestamps(); }); } From 076d2985ee6a9946661b62d5e235ae6b661630c4 Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Thu, 10 Dec 2020 00:24:22 +0000 Subject: [PATCH 09/12] Created endpoint to update CollectionPoint --- .../API/CollectionPointController.php | 20 +++++++++++++++++++ .../CollectionPointService.php | 2 ++ routes/api.php | 1 + 3 files changed, 23 insertions(+) diff --git a/app/Http/Controllers/API/CollectionPointController.php b/app/Http/Controllers/API/CollectionPointController.php index 16972f4..2ce79ac 100644 --- a/app/Http/Controllers/API/CollectionPointController.php +++ b/app/Http/Controllers/API/CollectionPointController.php @@ -6,6 +6,7 @@ use App\Services\User\CollectionPointService; use App\Services\CollectionPoint\CollectionPointService as MainCollectionPointService; use App\Http\Requests\API\User\AuthenticatedRequest; +use App\Http\Requests\API\Charity\AuthenticatedRequest as CharityAuthenticatedRequest; use App\Services\All\PostcodeService; use App\Models\CollectionPoint; use App\Models\MealDetails; @@ -129,4 +130,23 @@ public function canDeliverToLocation($collectionPointId, AuthenticatedRequest $r ] ]); } + + public function update($id, CharityAuthenticatedRequest $request, MainCollectionPointService $collectionPointService) { + $collection_points = auth()->user()->charities->map->collectionPoints->flatten(); + if(!$collection_points->contains("id", $id)) { + return response()->json([ + 'status' => 'error', + 'data' => [], + "message" => "You are not part of this charity so you are not authorized to update this collection point. " + ], Response::HTTP_UNAUTHORIZED ); + } + + $collection_point = $collection_points->firstWhere('id', $id); + $result = $collectionPointService->update($collection_point, $request->all()); + + return response()->json([ + 'status' => 'success', + 'data' => $result, + ], Response::HTTP_OK ); + } } diff --git a/app/Services/CollectionPoint/CollectionPointService.php b/app/Services/CollectionPoint/CollectionPointService.php index 34ab8e5..d504abb 100644 --- a/app/Services/CollectionPoint/CollectionPointService.php +++ b/app/Services/CollectionPoint/CollectionPointService.php @@ -63,6 +63,8 @@ public function update(CollectionPoint $collectionPoint, $data) 'city' => $data['city'] ?? $collectionPoint->city, 'county' => $data['county'] ?? $collectionPoint->county, 'post_code' => $data['post_code'] ?? $collectionPoint->post_code, + "pick_up_time" => $data['pick_up_time'] ?? $collectionPoint->pick_up_time, + "cut_off_point" => $data['cut_off_point'] ?? $collectionPoint->cut_off_point, 'max_daily_capacity' => $data['max_daily_capacity'] ?? $collectionPoint->max_daily_capacity, ]); diff --git a/routes/api.php b/routes/api.php index 11474ff..8224700 100644 --- a/routes/api.php +++ b/routes/api.php @@ -65,5 +65,6 @@ Route::get('/collection-point/{collection_point_id}/meal-details', 'CollectionPointController@getMealDetails'); Route::post('/collection-point/{collection_point_id}/meal-details', 'CollectionPointController@updateMealDetails'); + Route::post('/collection-points/{id}', 'CollectionPointController@update'); Route::post('logout', 'AuthController@logout'); }); From 4c2ff465d15ebb38054e05db604f0e81908d17ce Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Thu, 10 Dec 2020 00:56:26 +0000 Subject: [PATCH 10/12] Reverting back Charity Users endpoints --- app/Http/Controllers/API/Charity/CharityController.php | 6 ++++-- routes/api.php | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/API/Charity/CharityController.php b/app/Http/Controllers/API/Charity/CharityController.php index faffabc..30df61b 100644 --- a/app/Http/Controllers/API/Charity/CharityController.php +++ b/app/Http/Controllers/API/Charity/CharityController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\API\Charity; use App\Http\Controllers\Controller; +use App\Models\Charity; use App\Services\Charity\CharityService; use App\Http\Requests\API\Charity\UpdateRequest; use App\Http\Requests\API\Charity\AuthenticatedRequest; @@ -28,9 +29,10 @@ public function show($id, AuthenticatedRequest $request, CharityService $charity ]); } - public function update(Charity $id, AuthenticatedRequest $request, CharityService $CharityService) + public function update(UpdateRequest $request, CharityService $charityService) { - $charity = $CharityService->update($id, $CharityService->getFillable($request)); + $charity = auth()->user()->charity(); + $charity = $charityService->update($charity, $charityService->getFillable($request)); return response()->json([ 'status' => 'success', diff --git a/routes/api.php b/routes/api.php index 8224700..145a199 100644 --- a/routes/api.php +++ b/routes/api.php @@ -39,7 +39,7 @@ // Charity Users API Route::group(['prefix' => 'charity', 'name' => 'charity.', 'namespace' => 'Charity'], function () { Route::get('/', 'CharityController@index'); - Route::post('/{id}', 'CharityController@update'); + Route::post('/', 'CharityController@update'); Route::get('/{id}', 'CharityController@show'); Route::get('/orders', 'OrderController@index'); }); From 0867c11fa073a6dd8b039ab9d43aaaf0cfa613f2 Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Tue, 19 Jan 2021 22:02:11 +0000 Subject: [PATCH 11/12] updated Schema to have start and end pickup times --- app/Services/CollectionPoint/CollectionPointService.php | 3 ++- database/factories/CollectionPointFactory.php | 3 ++- ...2_120405_add_quanities_and_timings_to_collection_points.php | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/Services/CollectionPoint/CollectionPointService.php b/app/Services/CollectionPoint/CollectionPointService.php index d504abb..5ff0403 100644 --- a/app/Services/CollectionPoint/CollectionPointService.php +++ b/app/Services/CollectionPoint/CollectionPointService.php @@ -63,7 +63,8 @@ public function update(CollectionPoint $collectionPoint, $data) 'city' => $data['city'] ?? $collectionPoint->city, 'county' => $data['county'] ?? $collectionPoint->county, 'post_code' => $data['post_code'] ?? $collectionPoint->post_code, - "pick_up_time" => $data['pick_up_time'] ?? $collectionPoint->pick_up_time, + "start_pick_up_time" => $data['start_pick_up_time'] ?? $collectionPoint->start_pick_up_time, + "end_pick_up_time" => $data['end_pick_up_time'] ?? $collectionPoint->end_pick_up_time, "cut_off_point" => $data['cut_off_point'] ?? $collectionPoint->cut_off_point, 'max_daily_capacity' => $data['max_daily_capacity'] ?? $collectionPoint->max_daily_capacity, ]); diff --git a/database/factories/CollectionPointFactory.php b/database/factories/CollectionPointFactory.php index d24ba58..230f8ec 100644 --- a/database/factories/CollectionPointFactory.php +++ b/database/factories/CollectionPointFactory.php @@ -16,7 +16,8 @@ 'city' => $faker->city, 'county' => $faker->county, 'post_code' => $faker->postcode, - "pick_up_time" => $faker->dateTime("+10 hours"), + "start_pick_up_time" => $faker->dateTime("+10 hours"), + "end_pick_up_time" => $faker->dateTime("+15 hours"), "cut_off_point" => $faker->dateTime("+10 hours"), 'max_daily_capacity' => rand(50, 100), ]; diff --git a/database/migrations/2020_11_22_120405_add_quanities_and_timings_to_collection_points.php b/database/migrations/2020_11_22_120405_add_quanities_and_timings_to_collection_points.php index 6083268..6c557d5 100644 --- a/database/migrations/2020_11_22_120405_add_quanities_and_timings_to_collection_points.php +++ b/database/migrations/2020_11_22_120405_add_quanities_and_timings_to_collection_points.php @@ -15,7 +15,8 @@ public function up() { Schema::table('collection_points', function (Blueprint $table) { $table->integer('quantity_of_meals')->default(1); - $table->dateTime('pick_up_time'); + $table->dateTime('start_pick_up_time'); + $table->dateTime('end_pick_up_time'); $table->dateTime("cut_off_point"); $table->integer("set_quantity_per_person")->default(1); $table->string("logo")->nullable(); From 329738f80b106c571e1b4a9cbcc2f3f5eb8f67e6 Mon Sep 17 00:00:00 2001 From: Ahmed Mire Date: Tue, 19 Jan 2021 22:04:41 +0000 Subject: [PATCH 12/12] removed unused code --- .../CollectionPoint/CollectionPointService.php | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/app/Services/CollectionPoint/CollectionPointService.php b/app/Services/CollectionPoint/CollectionPointService.php index 5ff0403..20559d4 100644 --- a/app/Services/CollectionPoint/CollectionPointService.php +++ b/app/Services/CollectionPoint/CollectionPointService.php @@ -5,7 +5,6 @@ use App\Models\CollectionPoint; use App\Events\CollectionPoint\Created; use App\Events\CollectionPoint\Updated; -use App\Models\MealDetails; class CollectionPointService { @@ -21,21 +20,6 @@ public function getMealDetails($id) { return $collectionPoint->mealDetails; } - public function updateMealDetails($id, $UpdatedMealDetails) { - - $collectionPoint = CollectionPoint::findorFail($id); - $mealDetails = $collectionPoint->mealDetails; - - foreach ($UpdatedMealDetails as $key => $details) { - if( $mealDetails->type_of_meal !== MealDetails::HOT_FOOD && $mealDetails->type_of_meal !== MealDetails::HOME_ESSENTIALS && $mealDetails->type_of_meal !== MealDetails::SCHOOL_MEAL) { - - } - - } - - return $collectionPoint; - } - public function create($data) {