diff --git a/app/Helpers/Helpers.php b/app/Helpers/Helpers.php index 5488d0c..b367d90 100644 --- a/app/Helpers/Helpers.php +++ b/app/Helpers/Helpers.php @@ -5,24 +5,14 @@ namespace App\Helpers; class Helpers { - public static function object_to_array($object) + public static function uploadFiles($params, $field): ?string { - if (!is_object($object) && !is_array($object)) { - return $object; + $result = null; + if ($params->hasFile($field)) + { + $result = url('storage') . '/' . $params->file($field)->store('users'); } - return array_map([__CLASS__, 'object_to_array'], (array) $object); + return $result; } - public static function array_enkeyize($array, $iten): array - { - $keized = []; - foreach ($array as $key => $value) { - foreach ($value as $v_key => $v_value) { - if ($v_key === $iten) { - $keized[$v_value] = $array[$key]; - } - } - } - return $keized; - } } diff --git a/app/Http/Controllers/PldController.php b/app/Http/Controllers/PldController.php index 31e52c8..cf8be19 100644 --- a/app/Http/Controllers/PldController.php +++ b/app/Http/Controllers/PldController.php @@ -19,6 +19,18 @@ class PldController extends Controller protected PldContractInterface $pldContract ){} + public function index(Request $request) + { + try { + $response = $this->pldContract->searchPLd($request->all()); + return (new PldResource($response)) + ->response() + ->setStatusCode(Response::HTTP_OK); + }catch (\Exception $ex){ + return $this->errorResponse(false, $ex->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR); + } + } + public function overviewByRegion() { try { diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 0c23c24..89a1081 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Http\Controllers; +use App\Helpers\Helpers; use App\Http\Requests\StoreUserRequest; use App\Http\Resources\UserResource; use App\Repositories\Users\UserContractInterface; @@ -47,7 +48,15 @@ class UserController extends Controller public function store(StoreUserRequest $request): JsonResponse { try { - $response = $this->user->create($request->all()); + $user = $request->all(); + $user['password'] = bcrypt($request->password); + + if ($request->hasFile('profile_picture')) + { + $user['profile_picture'] = url('storage') . '/' . $request->file('profile_picture')->store('users'); + } + + $response = $this->user->create($user); return (new UserResource($response)) ->response() ->setStatusCode(Response::HTTP_CREATED); diff --git a/app/Http/Requests/StoreUserRequest.php b/app/Http/Requests/StoreUserRequest.php index 7353906..5f7f3a6 100644 --- a/app/Http/Requests/StoreUserRequest.php +++ b/app/Http/Requests/StoreUserRequest.php @@ -24,10 +24,15 @@ class StoreUserRequest extends FormRequest public function rules() { return [ - 'name' => 'required|string', - 'email' => 'required|string|email|max:255|unique:users', + 'name' => 'required|string|max:255|min:3', + 'email' => [ + 'required', + 'email', + "unique:users,email" + ], 'password'=> 'required|string|min:6|confirmed', - 'client_id' => 'required' + 'client_id' => 'nullable', + 'profile_picture' =>'nullable|image|max:1024' ]; } } diff --git a/app/Models/User.php b/app/Models/User.php index e7fadd3..003e964 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -24,6 +24,7 @@ class User extends Authenticatable implements Auditing 'name', 'email', 'password', + 'profile_picture', 'created_at', 'updated_at', 'deleted_at', diff --git a/app/Repositories/ContractInterface.php b/app/Repositories/ContractInterface.php index 0478622..49ce0a9 100644 --- a/app/Repositories/ContractInterface.php +++ b/app/Repositories/ContractInterface.php @@ -10,5 +10,5 @@ interface ContractInterface public function update(array $params, $id); public function destroy($id); public function withRelationsByAll($relations); - public function selectGlobal($params); + public function search($params); } diff --git a/app/Repositories/MethodsTrait.php b/app/Repositories/MethodsTrait.php index fa300a1..2ae1767 100644 --- a/app/Repositories/MethodsTrait.php +++ b/app/Repositories/MethodsTrait.php @@ -38,14 +38,12 @@ trait MethodsTrait return $this->model->with($relations)->get(); } - public function selectGlobal($params) + public function search($params) { $filter = static::getFilterBuilder($params); $query = $this->model->select($filter->getFields()); - $result = $filter->applyFilter($query)->get(); - - dd($result); + return $filter->applyFilter($query)->get(); } } \ No newline at end of file diff --git a/app/Repositories/Pld/PldContractInterface.php b/app/Repositories/Pld/PldContractInterface.php index a5046f2..c12e167 100644 --- a/app/Repositories/Pld/PldContractInterface.php +++ b/app/Repositories/Pld/PldContractInterface.php @@ -10,4 +10,5 @@ interface PldContractInterface extends ContractInterface public function getConsumptionByDaily($params); public function getListConsumption($params); public function getConsumptionBySchedule($params); + public function searchPLd($params); } \ No newline at end of file diff --git a/app/Repositories/Pld/PldRepository.php b/app/Repositories/Pld/PldRepository.php index 8d18d5a..14c486b 100644 --- a/app/Repositories/Pld/PldRepository.php +++ b/app/Repositories/Pld/PldRepository.php @@ -31,6 +31,16 @@ class PldRepository extends AbstractRepository implements PldContractInterface return $query; } + public function searchPLd($params) + { + $fields = [ + 'pld.mes_ref as year_month', + DB::raw("TO_CHAR(TO_DATE(pld.mes_ref, 'YYMM'), 'MM/YYYY') as year_month_formatted"), + ]; + + return $this->execute($fields, $params)->distinct()->get(); + } + /** * @throws BindingResolutionException */ diff --git a/database/migrations/2014_06_08_000000_create_users_table.php b/database/migrations/2014_06_08_000000_create_users_table.php index 2dadc8d..2adf7bb 100644 --- a/database/migrations/2014_06_08_000000_create_users_table.php +++ b/database/migrations/2014_06_08_000000_create_users_table.php @@ -20,6 +20,7 @@ return new class extends Migration $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); + $table->string('profile_picture')->nullable(); $table->rememberToken(); $table->timestamps(); $table->softDeletes(); diff --git a/routes/api.php b/routes/api.php index 1b1e974..b2880cf 100644 --- a/routes/api.php +++ b/routes/api.php @@ -40,6 +40,7 @@ Route::middleware(['auth:sanctum', 'ability:Admin'])->group(function () { }); Route::middleware(['auth:sanctum', 'ability:Client'])->group(function () { + Route::post('pld', [\App\Http\Controllers\PldController::class, 'index']); Route::post('pld/overview', [\App\Http\Controllers\PldController::class, 'overviewByRegion']); Route::post('pld/list', [\App\Http\Controllers\PldController::class, 'listConsumption']); Route::post('pld/daily', [\App\Http\Controllers\PldController::class, 'consumptionByDaily']);