propertyAwardsCertificateRepository = $propertyAwardsCertificateRepository; $this->awardsCertificateCategoryRepository = $awardsCertificateCategoryRepository; $this->propertyAwardsCertificateCreateValidator = $propertyAwardsCertificateCreateValidator ; $this->propertyAwardsCertificateUpdateValidator = $propertyAwardsCertificateUpdateValidator; $this->propertyAwardCertificateUploadValidator = $propertyAwardCertificateUploadValidator; $this->propertyRepository = $propertyRepository ; } public function create($params = []) { $response = ['status' => -1, 'message' => '', 'data' => null]; try { $validationResult = $this->propertyAwardsCertificateCreateValidator->validate($params); if ($validationResult->errors()->first()) { $errors = $validationResult->errors()->all(); throw new ApiErrorException($errors); } $filePath = null ; $fileType = null ; if($params['file']){ // upload new image ... $uploadFile = $this->uploadCertificate($params); if ($uploadFile['status'] != 'success') { throw new Exception($uploadFile['message']); } $filePath = $uploadFile['data']['file_path'] ; $fileType = $uploadFile['data']['file_type'] ; } $insertData = [ 'property_id' => fillOnUndefined($params, 'property_id'), 'category_id' => fillOnUndefined($params, 'category_id'), 'language_code' => fillOnUndefined($params, 'language_code'), 'name' => fillOnUndefined($params, 'name'), 'date' => fillOnUndefined($params, 'date'), 'url' => fillOnUndefined($params, 'url'), 'file_path' => $filePath, 'file_type' => $fileType, "status" => fillOnUndefined($params, "status", 1), "created_by" => fillOnUndefined($params, "user_id"), "updated_by" => fillOnUndefined($params, "user_id"), "created_at" => time(), "updated_at" => time(), ]; $createResult = $this->propertyAwardsCertificateRepository->create($insertData); if ($createResult['status'] != 'success') { throw new Exception('api-unknown_error'); } $userData = $createResult["data"]; $response = [ 'status' => true, 'data' => $userData, ]; } catch (ApiErrorException $e) { $response['message'] = implode(', ', $e->getMessageArr()); } catch (Exception $e) { $message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage(); Log::error($message); $response['message'] = $e->getMessage(); } return output($response); } public function select($params= [], $column = ['*']) { $response = ['status' => -1, 'message' => '', 'data' => null]; try { $data = $this->propertyAwardsCertificateRepository->findByCriteria($params, $column); $response = [ 'status' => true, 'data' => $data, ]; } catch (ApiErrorException $e) { $response['message'] = $e->getMessage(); } catch (Exception $e) { $message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage(); Log::error($message); $response['message'] = $e->getMessage(); } return output($response); } public function update($params = []) { $response = ['status' => -1, 'message' => '', 'data' => null]; try { $validationResult = $this->propertyAwardsCertificateUpdateValidator->validate($params); if ($validationResult->errors()->first()) { $errors = $validationResult->errors()->all(); throw new ApiErrorException($errors); } $id = fillOnUndefined($params, 'award_certificate_id') ; $filePath = null ; $fileType = null ; $deleteThisImage = null ; $requestCriteria = [ 'criteria' => [ // ['field' => 'status', 'condition' => '=', 'value' => 1], ['field' => 'id', 'condition' => '=', 'value' => $params['award_certificate_id']], ['field' => 'property_id', 'condition' => '=', 'value' => $params['property_id']], ], 'firstRow' => 1, ]; $columns = ['id', 'property_id', 'category_id', 'name', 'date', 'url', 'file_path', 'file_type', 'status']; $awardCertificate = $this->propertyAwardsCertificateRepository->findByCriteria($requestCriteria,$columns); if (!$awardCertificate) { throw new Exception('api-unknown_error'); } $fileUpdateData = []; if($params['file']){ // upload new image ... $uploadFile = $this->uploadCertificate($params); if ($uploadFile['status'] != 'success') { throw new Exception($uploadFile['message']); } $filePath = $uploadFile['data']['file_path'] ; $fileType = $uploadFile['data']['file_type'] ; // set delete old image+++++++ if($awardCertificate['file_path']){ $urlPath = '/property-photos/' . $awardCertificate['property_id'] . "/awards-certificates/"; $deleteThisImage = Config::get('app.fileSystemDriver') . $urlPath . $awardCertificate['file_path']; } $fileUpdateData = [ 'file_path' => $filePath, 'file_type' => $fileType, ]; } $updateData = [ 'category_id' => fillOnUndefined($params, 'category_id'), 'language_code' => fillOnUndefined($params, 'language_code'), 'name' => fillOnUndefined($params, 'name'), 'date' => fillOnUndefined($params, 'date'), 'url' => fillOnUndefined($params, 'url'), "updated_by" => fillOnUndefined($params, "user_id"), "updated_at" => time(), ]; $updateData = array_merge($updateData, $fileUpdateData) ; $updateResult = $this->propertyAwardsCertificateRepository->update($id, $updateData); if ($updateResult['status'] != 'success') { throw new Exception('api-unknown_error'); } $updateData = $updateResult["data"]; if($deleteThisImage) { if (File::exists($deleteThisImage)) { File::delete($deleteThisImage); } } $response = [ 'status' => true, 'data' => $updateData, ]; } catch (ApiErrorException $e) { $response['message'] = implode(', ', $e->getMessageArr()); } catch (Exception $e) { $message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage(); Log::error($message); $response['message'] = $e->getMessage(); } return output($response); } public function getCategoryList($params= [], $column = ['*']) { $response = ['status' => -1, 'message' => '', 'data' => null]; try { $requestCriteria = [ 'criteria' => [ ['field' => 'id', 'condition' => '=', 'value' => $params['property_id']] ], 'firstRow' => 1 ]; $columns = ['id', 'name', 'country']; $property = $this->propertyRepository->findByCriteria($requestCriteria, $columns); $requestCriteria = [ 'criteria' => [ ['field' => 'status', 'condition' => '=', 'value' => 1], ], 'whereOr' => [ ['field' => 'country_code', 'condition' => '=', 'value' => $property['country']], ['field' => 'country_code', 'condition' => '=', 'value' => null], ], 'orderBy' => [ ["field" => "name", "value" => "ASC"], ] ]; $columns = ['id', 'name', 'language_key', 'country_code', 'logo', 'type', 'status']; $data = $this->awardsCertificateCategoryRepository->findByCriteria($requestCriteria,$columns); $response = [ 'status' => true, 'data' => $data, ]; } catch (ApiErrorException $e) { $response['message'] = $e->getMessage(); } catch (Exception $e) { $message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage(); Log::error($message); $response['message'] = $e->getMessage(); } return output($response); } public function listAwardsCertificates($params= [], $column = ['*']) { $response = ['status' => -1, 'message' => '', 'data' => null]; try { $requestCriteria = [ 'criteria' => [ // ['field' => 'status', 'condition' => '=', 'value' => 1] ['field' => 'property_id', 'condition' => '=', 'value' => $params['property_id']] ], 'with' => ['awardsCertificateCategory'] ]; $columns = ['id', 'property_id', 'category_id', 'name', 'language_code', 'date', 'url', 'file_path', 'file_type', 'status']; $data = $this->propertyAwardsCertificateRepository->findByCriteria($requestCriteria,$columns); $responseData = collect($data)->map(function ($value){ $return = $value ; unset($return['awards_certificate_category']) ; $image = null ; if($value['file_path']){ $urlPath = '/property-photos/' . $value['property_id'] . "/awards-certificates/"; $image = Config::get('app.imageUrl') . $urlPath . $value['file_path']; } $return['file_path'] = $image ? $image : null ; $category = [ 'category_name' => $value['awards_certificate_category']['name'], 'category_language_key' => $value['awards_certificate_category']['language_key'], 'category_country_code' => $value['awards_certificate_category']['country_code'], 'category_logo' => $value['awards_certificate_category']['logo'], 'category_type' => $value['awards_certificate_category']['type'], 'category_status' => $value['awards_certificate_category']['status'], ]; return array_merge($return, $category) ; })->values()->all() ; array_multisort( array_column($responseData, 'category_name'), SORT_ASC, array_column($responseData, 'id'), SORT_DESC, $responseData ); $response = [ 'status' => true, 'data' => $responseData, ]; } catch (ApiErrorException $e) { $response['message'] = $e->getMessage(); } catch (Exception $e) { $message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage(); Log::error($message); $response['message'] = $e->getMessage(); } return output($response); } public function uploadCertificate($params = []) { $response = ['status' => -1, 'message' => '', 'data' => null]; try { $fileParam = [] ; $validateParams = [ 'file' => $params['file'] ]; $validationResult = $this->propertyAwardCertificateUploadValidator->validate($validateParams); if ($validationResult->errors()->first()) { throw new ApiErrorException($validationResult->errors()->all()); } $filePath = Config::get('app.fileSystemDriver') . '/property-photos/' . $params['property_id'] . "/awards-certificates/"; if (!File::exists($filePath)) { File::makeDirectory($filePath, 0777, true); } $uploadedFile = $params['file']; $fileExt = $uploadedFile->getClientOriginalExtension(); $fileName = time() . '_'. generateRandomString(10) . '.' . $fileExt; $quality = 80 ; if(strtolower($fileExt) == 'pdf'){ $move = $params['file']->move($filePath, $fileName); if ($move) { $fileParam = [ 'file_path' => $fileName, 'file_type' => 'PDF', ]; } }else{ $uploadedOriginalImage = Image::make($uploadedFile); $imageWidth = $uploadedOriginalImage->width() ; $imageHeight = $uploadedOriginalImage->height(); if ($imageHeight > $imageWidth) { if($imageHeight > 768){ $imageHRatio = $imageHeight / 768 ; $imageResizedOriginalWidth = intval($imageWidth / $imageHRatio); $image = $uploadedOriginalImage->fit($imageResizedOriginalWidth, 768)->save($filePath . $fileName , $quality) ; }else{ $image = $uploadedOriginalImage->save($filePath . $fileName , $quality) ; } } else { if($imageWidth > 1024) { $imageWRatio = $imageWidth / 1024 ; $imageResizedOriginalHeight = intval($imageHeight / $imageWRatio); $image = $uploadedOriginalImage->fit(1024, $imageResizedOriginalHeight)->save($filePath . $fileName , $quality) ; }else{ $image = $uploadedOriginalImage->save($filePath . $fileName , $quality) ; } } $fileParam = [ 'file_path' => $fileName, 'file_type' => 'IMG', ]; $uploadedOriginalImage->destroy(); } $response = ['status' => 1, 'statusCode' => 200, 'message' => null, 'data' => $fileParam]; } catch (ApiErrorException $e) { $response['message'] = implode(', ', $e->getMessageArr()); $response['data'] = ''; $response['statusCode'] = 400; } catch (Exception $e) { $message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage(); Log::error($message); $response['message'] = $e->getMessage(); $response['data'] = ''; $response['statusCode'] = 400; } return output($response); } public function deletePhotoAwardsCertificates($params = []) { $response = ['status' => -1, 'message' => '', 'data' => null]; try { $requestCriteria = [ 'criteria' => [ ['field' => 'status', 'condition' => '=', 'value' => 1], ['field' => 'id', 'condition' => '=', 'value' => $params['award_certificate_id']], ['field' => 'property_id', 'condition' => '=', 'value' => $params['property_id']], ], 'firstRow' => 1, ]; $columns = ['id', 'property_id', 'category_id', 'name', 'date', 'url', 'file_path', 'file_type', 'status']; $awardCertificate = $this->propertyAwardsCertificateRepository->findByCriteria($requestCriteria,$columns); if (!$awardCertificate) { throw new Exception('api-unknown_error'); } $urlPath = '/property-photos/' . $awardCertificate['property_id'] . "/awards-certificates/"; $deleteThisImage = Config::get('app.fileSystemDriver') . $urlPath . $awardCertificate['file_path']; if($deleteThisImage) { if (File::exists($deleteThisImage)) { File::delete($deleteThisImage); } } $id = $awardCertificate['id'] ; $updateData = [ 'file_path' => null, 'file_type' => null, "updated_by" => fillOnUndefined($params, "user_id"), "updated_at" => time(), ]; $updateResult = $this->propertyAwardsCertificateRepository->update($id, $updateData); if ($updateResult['status'] != 'success') { throw new Exception('api-unknown_error'); } $response = [ 'status' => true, 'data' => null, ]; } catch (ApiErrorException $e) { $response['message'] = implode(', ', $e->getMessageArr()); } catch (Exception $e) { $message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage(); Log::error($message); $response['message'] = $e->getMessage(); } return output($response); } public function updateStatus($param = []) { $response = ['status' => -1, 'message' => '', 'data' => null]; try { $updateId = fillOnUndefined($param, "award_certificate_id") ; $placeRequest = [ 'criteria' => [ ['field' => 'property_id', 'condition' => '=', 'value' => fillOnUndefined($param, 'property_id')], ['field' => 'id', 'condition' => '=', 'value' => $updateId], ] ]; $propertyWebData = $this->propertyAwardsCertificateRepository->findByCriteria($placeRequest, ['id', 'name']); if (!$propertyWebData) { throw new Exception('api-unknown_error'); } $updateData = [ "status" => fillOnUndefined($param, "set_status", 0), "updated_by" => fillOnUndefined($param, "user_id"), "updated_at" => time(), ]; $updateResult = $this->propertyAwardsCertificateRepository->update($updateId, $updateData); if ($updateResult['status'] != 'success') { throw new Exception('api-unknown_error'); } $response = [ 'status' => true, 'data' => null, ]; } catch (ApiErrorException $e) { $response['message'] = implode(', ', $e->getMessageArr()); } catch (Exception $e) { $message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage(); Log::error($message); $response['message'] = $e->getMessage(); } return output($response); } }