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(); }
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(); }
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(); }