예제 #1
0
 public function postMailer(Request $request)
 {
     $this->validate($request, ['item_id' => 'required|numeric|min:1', 'quantity' => 'required|numeric|min:1', 'protection_type' => 'required|numeric|min:0', 'time_limit' => 'numeric', 'gold' => 'numeric', 'subject' => 'required', 'message' => 'required']);
     $api = new API();
     $mail = array('title' => $request->subject, 'message' => $request->message, 'money' => $request->gold, 'item' => ['id' => $request->item_id, 'pos' => 0, 'count' => $request->quantity, 'max_count' => $request->quantity, 'data' => $request->octet ? $request->octet : NULL, 'proctype' => $request->protection_type ? $request->protection_type : 0, 'expire_date' => $request->time_limit ? time() + $request->time_limit : 0, 'guid1' => 0, 'guid2' => 0, 'mask' => $request->mask]);
     switch ($request->type) {
         //TODO Add a parameter to the success message that tells the user how many players the item was sent to or their names
         case 'list':
             $roles = explode(',', str_replace(' ', '', $request->roles));
             foreach ($roles as $index => $id) {
                 $api->sendMail($id, $mail['title'], $mail['message'], $mail['item'], $mail['money']);
                 flash()->success(trans('management.complete.mailer.list'));
             }
             break;
         case 'all':
             $users = User::all();
             foreach ($users as $user) {
                 $roles = $api->getRoles($user->ID) ? $api->getRoles($user->ID)['roles'] : [];
                 foreach ($roles as $role) {
                     $api->sendMail($role['id'], $mail['title'], $mail['message'], $mail['item'], $mail['money']);
                 }
             }
             flash()->success(trans('management.complete.mailer.all'));
             break;
         case 'online':
             foreach ($api->getOnlineList() as $index => $role) {
                 $api->sendMail($role['roleid'], $mail['title'], $mail['message'], $mail['item'], $mail['money']);
             }
             flash()->success(trans('management.complete.mailer.online'));
             break;
     }
     return redirect()->back();
 }
예제 #2
0
 public function postRedeem(Request $request)
 {
     $api = new API();
     $voucher = Voucher::findOrFail($request->code);
     if (!VoucherLog::redeemed($voucher->id)->exists()) {
         $mail = ['title' => trans('voucher.mail.title', ['code' => $request->code]), 'message' => trans('voucher.mail.message', ['name' => $voucher->item_name, 'count' => $voucher->item_count]), 'money' => 0, 'item' => ['id' => $voucher->item_id, 'pos' => 0, 'count' => $voucher->item_count, 'max_count' => $voucher->item_count, 'data' => $voucher->item_octets, 'proctype' => $voucher->item_proc_type, 'expire_date' => 0, 'guid1' => 0, 'guid2' => 0, 'mask' => $voucher->item_mask]];
         $api->sendMail(Auth::user()->characterId(), $mail['title'], $mail['message'], $mail['item'], $mail['money']);
         VoucherLog::create(['voucher_id' => $voucher->id, 'user_id' => Auth::user()->ID]);
         flash()->success(trans('voucher.successfully_redeemed'));
     } else {
         flash()->error(trans('voucher.already_redeemed'));
     }
     return redirect()->back();
 }
예제 #3
0
 public function postGift(Request $request, ShopItem $item)
 {
     $this->validate($request, ['friends' => 'required|array|min:1']);
     $user = Auth::user();
     $item_price = $item->discount > 0 ? $item->price - $item->price / 100 * $item->discount : $item->price;
     if ($user->money > $item_price) {
         $api = new API();
         $mail = array('title' => trans('shop.gift_item.title'), 'message' => trans('shop.gift_item.message', ['name' => $item->name, 'count' => $item->count, 'player' => $user->characterName()]), 'money' => 0, 'item' => array('id' => $item->item_id, 'pos' => 0, 'count' => $item->count, 'max_count' => $item->max_count, 'data' => $item->octet, 'proctype' => $item->protection_type, 'expire_date' => $item->expire_date, 'guid1' => 0, 'guid2' => 0, 'mask' => $item->mask));
         foreach ($request->friends as $friend) {
             if ($api->sendMail($friend, $mail['title'], $mail['message'], $mail['item'], $mail['money'])) {
                 //TODO Add notifications
                 $user->money = $user->money - $item_price;
                 $user->save();
                 flash()->success(trans('shop.gift_complete', ['name' => $item->name, 'count' => count($request->friends)]));
             } else {
                 flash()->error(trans('main.server_not_online'));
             }
         }
     } else {
         flash()->error(trans('main.not_enough', ['currency' => strtolower(settings('currency_name'))]));
     }
     return redirect()->back();
 }