Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Sts\CmsActivity\BO;
- use Log;
- use Sts\CmsActivity\Model\SalesmanVisitPlan;
- use Sts\CmsActivity\Model\SalesmanVisitRealization;
- use Sts\PleafCore\BusinessTransaction;
- use Sts\PleafCore\DefaultBusinessTransaction;
- use Sts\PleafCore\CoreException;
- /**
- * @author Bahar, Thursday 17 Oktober 2019
- * @in
- *
- * @out
- */
- class CheckInSalesmanVisit extends DefaultBusinessTransaction implements BusinessTransaction
- {
- public function getDescription()
- {
- return "Check In Salesman Visit";
- }
- public function prepare($dto, $originalDto)
- {
- if(time() < $dto['check_in_time_local']){
- $this->errorBusinessValidation(["error" => "check.in.time.invalid"]);
- }
- $findPartnerByUserId = \App::make("findPartnerByUserId");
- $findPartnerById = \App::make("findPartnerById");
- $findPlanSalesmanVisitPlanById = \App::make("findPlanSalesmanVisitPlanById");
- $input_findPartnerByUserId = [
- "user_id" => $dto["salesman_user_id"],
- ];
- $input_findPartnerById = [
- "partner_id" => $dto["customer_user_id"],
- ];
- $input_findPlanSalesmanVisitPlanById = [
- "salesman_visit_plan_id" => $dto["visit_id"]
- ];
- $result_findPartnerById = $findPartnerById->execute($input_findPartnerById);
- $findPartnerByUserId_result = $findPartnerByUserId->execute($input_findPartnerByUserId);
- $result_findPlanSalesmanVisitPlanById = $findPlanSalesmanVisitPlanById->execute($input_findPlanSalesmanVisitPlanById);
- if($result_findPartnerById->active == "N") {
- $this->errorBusinessValidation(["error" => "Status toko tidak aktif"]);
- }
- if($result_findPlanSalesmanVisitPlanById->status_visit != "N" && $result_findPlanSalesmanVisitPlanById->status_visit != 'P') {
- $this->errorBusinessValidation(["error" => "Tidak dapat melakukan kunjungan ditoko tersebut"]);
- }
- $dto["partner_by_user_id"] = $findPartnerByUserId_result;
- $dto["customer"] = $result_findPartnerById;
- return $dto;
- }
- public function process($dto, $originalDto)
- {
- Log::debug('Process BT CheckinSalesmanVisit');
- $salesman_visit_plan_id = $dto["visit_id"];
- $tenant_id = $dto["tenant_id"];
- $username = $dto["username"];
- $check_in_time_local = $dto["check_in_time_local"];
- $check_in_time_server = $dto["check_in_time_server"];
- $image = $dto["image"];
- $longitude = $dto["longitude"];
- $latitude = $dto["latitude"];
- $datetime = $dto["datetime"];
- $visit_strategy = $dto["visit_strategy"];
- $status_visit = _IN_PROGRESS;
- $partner_by_user_id = $dto["partner_by_user_id"];
- $customer = $dto["customer"];
- $date = substr($datetime, 0, 8);
- $path = storage_path('visit-plan/' . $tenant_id . '/' . $date . '/' . $partner_by_user_id->partner_id. '/');
- $dokumen_verification_file_path = $image;
- $dokumen_verification_file = explode(',', $dokumen_verification_file_path)[1];
- $dokumen_verification_decoded_file = base64_decode($dokumen_verification_file);
- $dokumen_verification_image_information = getimagesizefromstring($dokumen_verification_decoded_file);
- $dokumen_verification_pic_file_name = "visit-plan-".$customer->partner_id."-".$datetime.image_type_to_extension($dokumen_verification_image_information[2]);
- $dokumen_verification_pic_file_path = "visit-plan/".$tenant_id."/".$date."/".$partner_by_user_id->partner_id."/".$dokumen_verification_pic_file_name;
- if (!file_exists($path)) {
- mkdir($path . '/', 0777, true);
- }
- if ($dokumen_verification_file_path != null or $dokumen_verification_file_path != "") {
- file_put_contents($path . $dokumen_verification_pic_file_name, $dokumen_verification_decoded_file);
- }
- $SalesmanVisitPlan = SalesmanVisitPlan::find($salesman_visit_plan_id);
- $SalesmanVisitPlan->visit_strategy = $visit_strategy;
- $SalesmanVisitPlan->update_datetime = $datetime;
- $SalesmanVisitPlan->update_username = $username;
- $SalesmanVisitPlan->status_visit = $status_visit;
- $SalesmanVisitPlan->save();
- $SalesmanVisitRealization = new SalesmanVisitRealization();
- $SalesmanVisitRealization->tenant_id = $tenant_id;
- $SalesmanVisitRealization->salesman_visit_plan_id = $salesman_visit_plan_id;
- $SalesmanVisitRealization->salesman_id = $partner_by_user_id->partner_id;
- $SalesmanVisitRealization->customer_id = $customer->partner_id;
- $SalesmanVisitRealization->check_in_time_local = $check_in_time_local;
- $SalesmanVisitRealization->check_in_time_server = $check_in_time_server;
- $SalesmanVisitRealization->check_in_longitude = $longitude;
- $SalesmanVisitRealization->check_in_latitude = $latitude;
- $SalesmanVisitRealization->visit_date = $SalesmanVisitPlan->visit_date;
- $SalesmanVisitRealization->status_visit = $status_visit;
- $SalesmanVisitRealization->check_in_photo_file_name = $dokumen_verification_pic_file_path;
- $SalesmanVisitRealization->create_datetime = $datetime;
- $SalesmanVisitRealization->update_datetime = $datetime;
- $SalesmanVisitRealization->create_username = $username;
- $SalesmanVisitRealization->update_username = $username;
- $SalesmanVisitRealization->version = 0;
- $SalesmanVisitRealization->save();
- return [
- "salesman_visit_realization" => $SalesmanVisitRealization,
- ];
- }
- protected function rules()
- {
- return [
- "visit_id" => "required",
- "salesman_user_id" => "required",
- "customer_user_id" => "required",
- ];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement