Implementar upload de imagem para o cliente.

This commit is contained in:
Djonathan 2022-06-22 11:08:57 -03:00
parent c53d0e0ed3
commit 3fa0440b31
11 changed files with 53 additions and 25 deletions

View File

@ -5,24 +5,14 @@ namespace App\Helpers;
class Helpers class Helpers
{ {
public static function object_to_array($object) public static function uploadFiles($params, $field): ?string
{ {
if (!is_object($object) && !is_array($object)) { $result = null;
return $object; 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;
}
} }

View File

@ -19,6 +19,18 @@ class PldController extends Controller
protected PldContractInterface $pldContract 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() public function overviewByRegion()
{ {
try { try {

View File

@ -4,6 +4,7 @@ declare(strict_types=1);
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Helpers\Helpers;
use App\Http\Requests\StoreUserRequest; use App\Http\Requests\StoreUserRequest;
use App\Http\Resources\UserResource; use App\Http\Resources\UserResource;
use App\Repositories\Users\UserContractInterface; use App\Repositories\Users\UserContractInterface;
@ -47,7 +48,15 @@ class UserController extends Controller
public function store(StoreUserRequest $request): JsonResponse public function store(StoreUserRequest $request): JsonResponse
{ {
try { 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)) return (new UserResource($response))
->response() ->response()
->setStatusCode(Response::HTTP_CREATED); ->setStatusCode(Response::HTTP_CREATED);

View File

@ -24,10 +24,15 @@ class StoreUserRequest extends FormRequest
public function rules() public function rules()
{ {
return [ return [
'name' => 'required|string', 'name' => 'required|string|max:255|min:3',
'email' => 'required|string|email|max:255|unique:users', 'email' => [
'required',
'email',
"unique:users,email"
],
'password'=> 'required|string|min:6|confirmed', 'password'=> 'required|string|min:6|confirmed',
'client_id' => 'required' 'client_id' => 'nullable',
'profile_picture' =>'nullable|image|max:1024'
]; ];
} }
} }

View File

@ -24,6 +24,7 @@ class User extends Authenticatable implements Auditing
'name', 'name',
'email', 'email',
'password', 'password',
'profile_picture',
'created_at', 'created_at',
'updated_at', 'updated_at',
'deleted_at', 'deleted_at',

View File

@ -10,5 +10,5 @@ interface ContractInterface
public function update(array $params, $id); public function update(array $params, $id);
public function destroy($id); public function destroy($id);
public function withRelationsByAll($relations); public function withRelationsByAll($relations);
public function selectGlobal($params); public function search($params);
} }

View File

@ -38,14 +38,12 @@ trait MethodsTrait
return $this->model->with($relations)->get(); return $this->model->with($relations)->get();
} }
public function selectGlobal($params) public function search($params)
{ {
$filter = static::getFilterBuilder($params); $filter = static::getFilterBuilder($params);
$query = $this->model->select($filter->getFields()); $query = $this->model->select($filter->getFields());
$result = $filter->applyFilter($query)->get(); return $filter->applyFilter($query)->get();
dd($result);
} }
} }

View File

@ -10,4 +10,5 @@ interface PldContractInterface extends ContractInterface
public function getConsumptionByDaily($params); public function getConsumptionByDaily($params);
public function getListConsumption($params); public function getListConsumption($params);
public function getConsumptionBySchedule($params); public function getConsumptionBySchedule($params);
public function searchPLd($params);
} }

View File

@ -31,6 +31,16 @@ class PldRepository extends AbstractRepository implements PldContractInterface
return $query; 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 * @throws BindingResolutionException
*/ */

View File

@ -20,6 +20,7 @@ return new class extends Migration
$table->string('email')->unique(); $table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable(); $table->timestamp('email_verified_at')->nullable();
$table->string('password'); $table->string('password');
$table->string('profile_picture')->nullable();
$table->rememberToken(); $table->rememberToken();
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();

View File

@ -40,6 +40,7 @@ Route::middleware(['auth:sanctum', 'ability:Admin'])->group(function () {
}); });
Route::middleware(['auth:sanctum', 'ability:Client'])->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/overview', [\App\Http\Controllers\PldController::class, 'overviewByRegion']);
Route::post('pld/list', [\App\Http\Controllers\PldController::class, 'listConsumption']); Route::post('pld/list', [\App\Http\Controllers\PldController::class, 'listConsumption']);
Route::post('pld/daily', [\App\Http\Controllers\PldController::class, 'consumptionByDaily']); Route::post('pld/daily', [\App\Http\Controllers\PldController::class, 'consumptionByDaily']);