<?php
namespace App\Admin\Controllers;
use App\ChannelApplyUser;
use App\ChannelLevel;
use App\Combo;
use App\Company;
use App\CreditLog;
use App\Facades\CommonFacade;
use App\Http\Controllers\Controller;
use App\User;
use App\UserCombo;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Show;
use Encore\Admin\Widgets\Box;
use Illuminate\Http\Request;
use Encore\Admin\Widgets\Form as WForm;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\MessageBag;
class ManageChannelApplyUserController extends Controller
{
use HasResourceActions;
public function index(Content $content)
{
return $content
->header('申请')
->description('列表')
->body($this->grid());
}
public function show($id, Content $content)
{
return $content
->header('申请')
->description('详情')
->body($this->detail($id));
}
public function edit($id, Content $content)
{
return $content
->header('编辑')
->description('申请')
->body($this->form()->edit($id));
}
public function create(Content $content)
{
return $content
->header('录入')
->description('客户')
->body($this->form());
}
protected function grid()
{
$grid = new Grid(new ChannelApplyUser);
$grid->actions(function ($actions) {
$actions->disableDelete();
$actions->disableEdit();
$actions->disableView();
$submitUrl= url('admin/manage/channel/user/apply/detail?id='.$actions->getKey());
$actions->append("<a href='$submitUrl'>查看详情</a>");
});
$grid->disableCreateButton();
$grid->apply_at('申请时间');
$grid->status('状态')->using([0 => '已录入',1 => '待确认', 2 => '通过', 3 => '已拒绝']);
$grid->name('公司名称');
$grid->contact_name('联系人');
$grid->contact_phone('联系电话');
$grid->combo()->name('套餐');
$grid->contract_url('合同')->display(function ($contract_url) {
return "<a href='$contract_url' target='_blank'>下载</a>";
});
$grid->price('套餐费');
$grid->pay_type('费用缴纳')->display(function (){
if ($this->pay_type ==2) {
return "<a href='$this->proof' target='_blank'>下载凭证</a>";
}
if ($this->pay_status == 1) {
return "已支付";
}
});
$grid->reject_reason('拒绝理由');
return $grid;
}
protected function detail($id)
{
$show = new Show(ChannelApplyUser::findOrFail($id));
$show->id('Id');
$show->status('Status');
$show->name('Name');
$show->logo('Logo');
$show->address('Address');
$show->mail('Mail');
$show->contact_name('Contact name');
$show->contact_phone('Contact phone');
$show->registration_number('Registration number');
$show->registration_amount('Registration amount');
$show->combo_id('Combo id');
$show->contract_url('Contract url');
$show->proof('Proof');
$show->pay_type('Pay type');
$show->pay_status('Pay status');
$show->pat_at('Pat at');
$show->reject_reason('Reject reason');
$show->created_at('Created at');
$show->updated_at('Updated at');
return $show;
}
protected function form()
{
$form = new Form(new ChannelApplyUser);
$form->text('name', '公司名称')->rules('required');
$form->image('logo', 'Logo');
$form->text('address', '公司地址');
$form->email('mail', '邮箱');
$form->text('contact_name', '联系人')->rules('required');
$form->text('contact_phone', '联系电话')->rules('required');
$form->text('registration_number', '注册号');
$form->text('registration_amount', '注册资金');
return $form;
}
public function kaihu(Content $content,Request $request){
$apply = ChannelApplyUser::find($request->id);
return $content->header('合同')
->description('详情')->body(view('manage.channel.apply.detail', ['data' => $apply]));
}
public function handle(Request $request) {
$apply = ChannelApplyUser::find($request->id);
if (empty($apply)){
return ['code' => 404, 'msg' => '未找到该申请'];
}
if (User::where('username',$apply->contact_phone)->exists()){
return ['code' => 404, 'msg' => '该联系人已经存在'];
}
if ( $apply->status != 1) {
return ['code' => 400, 'msg' => '改状态不能处理'];
}
if ($request->status == 2) {
$company = new Company();
$company->name = $apply->name;
$company->logo = $apply->logo;
$company->address = $apply->address;
$company->mail = $apply->mail;
$company->contact_name = $apply->contact_name;
$company->contact_phone = $apply->contact_phone;
$company->registration_number = $apply->registration_number;
$company->registration_amount = $apply->registration_amount;
$company->type = 2;
$company->channel_id = $apply->user->company->id;
$company->save();
$user = new User();
$user->username = $apply->contact_phone;
$user->name = $apply->contact_name;
$user->password = bcrypt($apply->contact_phone);
$user->avatar = $apply->logo;
$user->company_id = $company->id;
$users = User::whereHas('roles', function($query) {
$query->where('slug', 'CustomerService');
})->get();
if (count($users) > 0) {
$user->service_user_id = $users[0]->id;
$company->service_user_id = $users[0]->id;
}
$user->save();
$userCombo = new UserCombo();
$userCombo->status = 1;
$userCombo->name = $apply->combo->name;
$userCombo->user_id = $user->id;
$userCombo->price = $apply->price;
$userCombo->content = $apply->combo->content;
$userCombo->left = $apply->combo->content;
$userCombo->combo_id = $apply->combo_id;
$userCombo->end_at = date('Y-m-d H:i:s',strtotime("+1 year"));
$userCombo->save();
Db::table('admin_role_users')->insert(['role_id' => 3,'user_id' => $user->id]);
$company->admin_user_id = $user->id;
$company->save();
}
$apply->status = $request->status;
$apply->remark = $request->remark;
$apply->save();
return ['code' => 200, 'msg' => '操作成功'];
}
}