<?php
namespace App\Http\Controllers\Web\Organization;
use Aix\Sms\Contracts\Smser;
use App\Http\Controllers\Web\WebBaseController;
use App\Models\Category;
use App\Repositories\MemberLogRepository;
use App\Services\Common\EmailService;
use App\Services\Common\SmsService;
use App\Services\Company\DispensingService;
use App\Services\Organization\OrganizationService;
use App\Services\Organization\ServiceService;
use App\Validators\OrganizationValidatorRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use App\Services\Auth\RegisterService;
use App\Services\Common\MembersSetmealService;
class OrganizationController extends WebBaseController
{
protected $organizationService;
protected $serviceService;
protected $smsService;
protected $memberLogRepository;
protected $emailService;
protected $dispensingService;
private $registerService;
private $membersSetmealService;
public function __construct(OrganizationService $organizationService,ServiceService $serviceService,SmsService $smsService,MemberLogRepository $memberLogRepository,EmailService $emailService,DispensingService $dispensingService, RegisterService $registerService, MembersSetmealService $membersSetmealService)
{
$this->organizationService = $organizationService;
$this->serviceService = $serviceService;
$this->smsService = $smsService;
$this->memberLogRepository = $memberLogRepository;
$this->emailService = $emailService;
$this->dispensingService = $dispensingService;
$this->registerService = $registerService;
$this->membersSetmealService = $membersSetmealService;
}
public function index()
{
$user = auth('web-organization')->user();
$service_list = $this->serviceService->list($user);
$service_total = $this->serviceService->total($user->id);
$trade = Category::categoryType('AIX_trade');
return view('app.organization.index',['service_list'=>$service_list,'service_total'=>$service_total,'trade'=>$trade]);
}
/**
* 机构信息
*/
public function organizationInfo()
{
$user = auth('web-organization')->user();
$organizationInfo = $this->organizationService->organizationInfo($user);
return view('app.organization.company_info', $organizationInfo);
}
public function serviceAdd(Request $request)
{
if(request()->method()=='POST'){
$data = $request->except('_method', '_token');
return $this->serviceService->save($data,auth('web-organization')->user());
}else{
return view('app.organization.service_add');
}
}
public function serviceEdit(Request $request){
if(request()->method()=='POST'){
$data = $request->except('_method', '_token');
return $this->serviceService->save($data,auth('web-organization')->user());
}else{
$id = $request->input('id');
$user = auth('web-organization')->user();
$where['id'] = $id;
$where['uid'] = $user->id;
$serviceInfo = $this->serviceService->serviceInfo($where);
if(!$serviceInfo){
return $this->showMessage('没有这个需求!', route('org.index'), true);
}
$trade = Category::categoryType('AIX_trade');
return view('app.organization.service_edit',['serviceInfo'=>$serviceInfo,'trade'=>$trade]);
}
}
public function serviceDel(Request $request)
{
$id = $request->id;
$user = auth('web-organization')->user();
return $this->serviceService->serviceDel($id, $user);
}
public function orgSecurity()
{
$user = auth('web-organization')->user();
$orgInfo = $this->organizationService->orgSecurity($user);
return view('app.organization.org_security', $orgInfo);
}
public function loginLog()
{
$user = auth('web-organization')->user();
$loginLog = $this->organizationService->orgLoginLog($user);
$orgInfo = $user;
$orgInfo['loginLog'] = $loginLog;
return view('app.organization.login_log', ['organizationInfo'=>$orgInfo]);
}
public function modifyPwd()
{
return view('app.organization.ajax.ajax_modify_pwd');
}
public function savePwd(OrganizationValidatorRequest $request)
{
$user = auth('web-organization')->user();
if (!$this->organizationService->savePwd($user, $request->oldpassword, $request->password, $request->password1)) {
return $this->sendErrorResponse('密码修改失败!');
}
if ($user->mobile) {
$this->smsService->sendSms($user->mobile, Smser::TEMPLATE_SMS_EDITPWD, ['sitename'=>subsite_config('aix.system.site.site.site_name'),'newpassword'=>$request->password]);
}
return $this->sendSuccessResponse('密码修改成功!');
}
public function authEmail()
{
$user = auth('web-organization')->user();
if (!$email = $this->organizationService->authEmail($user)) {
return response()->json(['status'=>0,'msg'=>'参数错误!']);
}
return response()->json(['status'=>1,'msg'=>'查询成功!','data'=>view('app.organization.ajax.ajax_auth_email', $email)->render()]);
}
public function emailSend(OrganizationValidatorRequest $request)
{
$email = $request->email;
$id = $request->id;
if (!$this->organizationService->checkEmailAudit($id, $email)->isEmpty()) {
return response()->json(['status'=>0, 'msg'=>'email已验证!']);
}
$user = auth('web-organization')->user();
$this->memberLogRepository->createLog($user,8001,"");
$this->emailService->setAuthTag('organization')
->setCallback('App\Services\Organization\OrganizationService', 'sendAuthEmailHook', [$email, auth('web-organization')->user()])
->sendAuthMail($email, EmailService::TEMPLATE_VALIDATION);
return response()->json(['status'=>1]);
}
public function dispensingList()
{
$dispensingList = $this->dispensingService->list();
return view('app.organization.org_dispensingList',['dispensing'=>$dispensingList]);
}
public function transfer()
{
$list = DB::table('organization')->whereRaw('id>9')->get()->toArray();
$list = json_decode(json_encode($list), true);
foreach ($list as $k => $v){
$info = DB::table('companys')->where('companyname',$v['orgname'])->first();
if(!$info){
$company=$this->registerService->registerCompany1($v);
$this->membersSetmealService->addMemberSetmeal($company, config('aix.companyset.setmeal_com.setmeal_com_set.reg_service'));
}
}
}
}