Пример #1
0
 public function register(array $input = array())
 {
     $customrules = ['email' => 'required|email|unique:user,email'];
     $input['type'] = isset($input['type']) ? $input['type'] : 'user';
     $input['via'] = isset($input['via']) ? $input['via'] : 'register';
     $input['signup_ref'] = isset($input['signup_ref']) ? $input['signup_ref'] : null;
     $input['ref_code'] = $this->_refCodeGenerator();
     $validation = $this->model->validate($input, $customrules);
     if ($validation->passes()) {
         $user = $this->model->create($input);
         $this->_sendWelcomeMail($input);
         if ($input['signup_ref'] != null) {
             \Space::create(['user_id' => $user->id, 'type' => 'credit', 'nominal' => \Config::get('thankspace.space_credit.signup'), 'keterangan' => 'Space Credit for sign up from link referral']);
         }
         $this->_sendAdminNewCustomerMail($user->id);
         if ($input['via'] != 'admin') {
             $auth = $this->_handleLogin($user->id);
             return $auth;
         } else {
             return true;
         }
     } else {
         $this->setErrors($validation->messages()->all(':message'));
         return false;
     }
 }
Пример #2
0
 /**
  * Get Storage Query, for get available storage in whare house
  * and create new invoice for almost expired storage period,
  * send mail and return stuff. this function processed with cron job
  *
  * @return array $data
  */
 public function GetInvoiceAlmostExpired()
 {
     $interval_info = [-7, -3, 0, 1];
     $interval_returned = 3;
     $orderPayments = $this->_GetStorages()->where('order.is_returned', 0)->where('payment_1.status', 2)->where('order_schedule.status', 1)->whereNull('order_stuff.return_schedule_id')->having('expired_on', '>=', $interval_info[0])->get();
     $data = $this->_getInvoiceInfo($orderPayments);
     foreach ($data as $d) {
         $temp = $d;
         if (in_array($temp['expired_on'], $interval_info)) {
             $lunas = false;
             // langsung lunas
             // cek, apakah sudah punya invoice baru apa tidak. jika tidak, buatkan !
             if ($temp['next_invoice'] == null) {
                 // ambil space credit user_id
                 $space_credit = app('UserRepo')->getCustomerSpaceCredit($temp['user_id']);
                 // ambil total biaya
                 $totalBiaya = getTotalFromCountStuff($temp['stuff']);
                 // ambil input new_invoice_input ( order_payment )
                 $newPayment = $temp['new_invoice_input'];
                 if ($space_credit != 0) {
                     if ($space_credit >= $totalBiaya) {
                         $newPayment += ['space_credit_used' => $totalBiaya, 'status' => '2'];
                         $lunas = true;
                     } else {
                         $newPayment += ['space_credit_used' => $space_credit];
                     }
                 }
                 // buat order baru
                 $newInvoice = $this->_save_orderPayment($temp['order_id'], $newPayment);
                 $temp['next_invoice'] = $newInvoice->code;
                 $temp['new_invoice'] = $newInvoice;
                 // insert space debet jika $space_credit_used != 0
                 if ($newInvoice->space_credit_used != 0) {
                     \Space::create(['user_id' => $temp['user_id'], 'type' => 'debet', 'nominal' => $newInvoice->space_credit_used, 'keterangan' => 'Credit used for purchases invoice #' . $newInvoice->code]);
                 }
             }
             if ($lunas) {
                 // kirim email langsung lunas
                 $this->_sendRecurringInvoiceLunasMail($temp);
             } else {
                 // kirim email invoice expired & invoice baru
                 $this->_sendRecurringInvoiceMail($temp);
             }
         } elseif ($temp['expired_on'] == $interval_returned) {
             // lakukan pengembalian barang
             $returnScheduleInput = ['user_id' => $temp['user_id'], 'order_id' => $temp['order_id'], 'return_date' => \Carbon\Carbon::parse($temp['expired_date'])->addDays(4)->format('Y-m-d'), 'return_time' => '08:00am - 10:00am', 'stuffs' => explode(',', implode(',', array_column($temp['stuff'], 'ids'))), 'city_id' => '', 'other_address' => '', 'status' => 0];
             $this->createReturnSchedule($returnScheduleInput);
             $_newInvoice = $temp['new_invoice'];
             //hapus invoice baru yang dibuat
             \OrderPayment::where('code', $_newInvoice->code)->delete();
             // cek apakah invoice baru menggunakan space credit, jika iya, hapus space debet nya untuk invoice ini.
             if ($_newInvoice->space_credit_used != 0) {
                 \Space::where('keterangan', 'like', '%#' . $_newInvoice->code . '%')->delete();
             }
             // kirim email pengembalian barang
             $this->_sendRecurringInvoiceKirimBarangMail($temp);
         }
     }
     return $data;
 }