601,'msg'=>'缺少必要参数','data'=>'']);
} else{
// echo 'what happend';
}
$all_time = explode('至',$set_time);
if(count($all_time) <2){
return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
}
$start_time = intval(str_replace('-','',$all_time[0]));
$end_time = intval(str_replace('-','',$all_time[1]));
// DB::enableQueryLog();
$sche_dule = Schedule::whereBetween('schedule_day',[$start_time,$end_time])
->where(['docter_id'=>$docter_id])
->pluck('id')
->toArray();
// echo '
';
// print_r(DB::getQueryLog());
// echo '
';
//dd($sche_dule);
$sche_dule_arr =[
[
'date'=>"上午",
'monday'=>false,
'tuesday'=>false,
'wednesday'=>false,
'thursday'=>false,
'friday'=>false,
'saturday'=>false,
'sunday'=>false,
],
[
'date'=>"下午",
'monday'=>false,
'tuesday'=>false,
'wednesday'=>false,
'thursday'=>false,
'friday'=>false,
'saturday'=>false,
'sunday'=>false,
],
[
'date'=>"晚上",
'monday'=>false,
'tuesday'=>false,
'wednesday'=>false,
'thursday'=>false,
'friday'=>false,
'saturday'=>false,
'sunday'=>false,
]
];
//周字段映射
$week_arr = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'];
//时段区间id
$schedule_config = SystemConfig::get('docter_config');
$mo = TimePeriod::where('start_time_period','>=',$schedule_config['morning_start'])->where('end_time_period','<=',$schedule_config['morning_end'])->pluck('id')->toArray();
$af = TimePeriod::where('start_time_period','>=',$schedule_config['afternoon_start'])->where('end_time_period','<=',$schedule_config['afternoon_end'])->pluck('id')->toArray();
$ev = TimePeriod::where('start_time_period','>=',$schedule_config['evening_start'])->where('end_time_period','<=',$schedule_config['evening_end'])->pluck('id')->toArray();
if(empty($sche_dule)){
return ['status'=>200,'msg'=>'ok','data'=>['schedule'=>$sche_dule_arr,'org_id'=>$org_id,'docter_id'=>$docter_id]];
}
$role = 2;
if($role == 1){
$ids = DocterOrganization::where(['organization_id'=>$org_id])->pluck('docter_id');
$list = Docter::whereIn('id',$ids)->get(['id as value','name as label'])->toArray();
$name = Organization::where('id',$docter_id)->value('name');
$user_id = $org_id;
for ($i = $start_time; $i<=$end_time; $i++){
$j = 0;
$strtime = "$i";
$str_time = substr($strtime,0,4).'-'.substr($strtime,4,2).'-'.substr($strtime,6,2);
//检测上午
$is_mo_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$mo)
->where('organization_id','!=',$org_id)->count();
['schedule_id'=>$sche_dule,'schedule_date'=>$str_time,'organization_id'=>$org_id,'docter_id'=>$docter_id];
$is_self = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$mo)
->where('organization_id',$org_id)->count();
if($is_self){
$sche_dule_arr[0][$week_arr[$j]] = true;
}
if($is_mo_have){
$sche_dule_arr[0][$week_arr[$j]] = 'other';
}
//检测下午
$is_af_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$af)
->where('organization_id','!=',$org_id)->count();
$is_af_self = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$af)
->where('organization_id',$org_id)->count();
if($is_af_self){
$sche_dule_arr[1][$week_arr[$j]] = true;
}
if($is_af_have){
$sche_dule_arr[1][$week_arr[$j]] = 'other';
}
//检测晚上
$is_ev_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$ev)
->where('organization_id','!=',$org_id)->count();
$is_ev_self = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$ev)
->where('organization_id',$org_id)->count();
if($is_ev_self){
$sche_dule_arr[2][$week_arr[$j]] = true;
}
if($is_ev_have){
$sche_dule_arr[2][$week_arr[$j]] = 'other';
}
}
} else {
$ids = DocterOrganization::where(['docter_id'=>$docter_id])->pluck('organization_id');
$list = Organization::whereIn('id',$ids)->get(['id as value','name as label'])->toArray();
$name = Docter::where('id',$docter_id)->value('name');
$user_id = $docter_id;
for ($i = $start_time; $i<=$end_time; $i++){
$j = 0;
$strtime = "$i";
$str_time = substr($strtime,0,4).'-'.substr($strtime,4,2).'-'.substr($strtime,6,2);
//检测上午
// echo $str_time.'
';
$is_mo_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$mo)
->where('organization_id','!=',$org_id)->where('docter_id','=',$docter_id)->count();
$is_mo_self = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$mo)
->where('organization_id','=',$org_id)->where('docter_id',$docter_id)->count();
if($is_mo_self){
$sche_dule_arr[0][$week_arr[$j]] = true;
}
if($is_mo_have){
$sche_dule_arr[0][$week_arr[$j]] = 'other';
}
//检测下午
$is_af_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$af)
->where('organization_id','!=',$org_id)->where('docter_id','=',$docter_id)->count();
$is_af_self = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$af)
->where('organization_id','=',$org_id)->where('docter_id',$docter_id)->count();
if($is_af_self){
$sche_dule_arr[1][$week_arr[$j]] = true;
}
if($is_af_have){
$sche_dule_arr[1][$week_arr[$j]] = 'other';
}
//检测晚上
$is_ev_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$ev)
->where('organization_id','!=',$org_id)->where('docter_id','=',$docter_id)->count();
$is_ev_self = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$ev)
->where('organization_id','=',$org_id)->where('docter_id',$docter_id)->count();
if($is_ev_self){
$sche_dule_arr[2][$week_arr[$j]] = true;
}
if($is_ev_have){
$sche_dule_arr[2][$week_arr[$j]] = 'other';
}
}
}
// "morning_start" => "09:00"
// "morning_end" => "12:00"
// "afternoon_start" => "13:00"
// "afternoon_end" => "18:00"
// "evening_start" => "19:00"
// "evening_end" => "20:00"
$data['docter'] = $sche_dule_arr;
$data['name'] = $name;
// $data['list'] = $list;
$data['role'] = $role;
$data['user_id'] = $user_id;
return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
}
//编辑排班
public function setDocChedule()
{
$docter_id = request('docter_id');
$org_id = request('org_id');
$set_time = request('time');
$data = request('schedulingtime');
$shcdule_id = request('schdule_id');
$set_time = '2020-12-07至2020-12-13';
if(empty($set_time) || empty($org_id) || empty($docter_id)){
return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
}
$all_time = explode('至',$set_time);
if(count($all_time) <2) {
return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
}
$start_time = intval(str_replace('-','',$all_time[0]));
$end_time = intval(str_replace('-','',$all_time[1]));
//周字段映射
$week_arr = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'];
$data = [
[
'date'=>"上午",
'monday'=>false,
'tuesday'=>false,
'wednesday'=>false,
'thursday'=>true,
'friday'=>false,
'saturday'=>false,
'sunday'=>false,
],
[
'date'=>"下午",
'monday'=>false,
'tuesday'=>true,
'wednesday'=>false,
'thursday'=>false,
'friday'=>false,
'saturday'=>false,
'sunday'=>false,
],
[
'date'=>"晚上",
'monday'=>false,
'tuesday'=>false,
'wednesday'=>true,
'thursday'=>false,
'friday'=>false,
'saturday'=>false,
'sunday'=>false,
]
];
//时段区间id
$schedule_config = SystemConfig::get('docter_config');
$mo = TimePeriod::where('start_time_period','>=',$schedule_config['morning_start'])
->where('end_time_period','<=',$schedule_config['morning_end'])
->pluck('id')->toArray();
$af = TimePeriod::where('start_time_period','>=',$schedule_config['afternoon_start'])
->where('end_time_period','<=',$schedule_config['afternoon_end'])
->pluck('id')->toArray();
$ev = TimePeriod::where('start_time_period','>=',$schedule_config['evening_start'])
->where('end_time_period','<=',$schedule_config['evening_end'])
->pluck('id')->toArray();
$mo_schedule = array_values($data[0]);
$af_schedule = array_values($data[1]);
$ev_schedule = array_values($data[2]);
$org_id = 1;
$docter_id = 47;
DB::beginTransaction();
try {
if(!$shcdule_id){
$schedule_insert = [
'organization_id'=>$org_id,
'docter_id'=>$docter_id,
'schedule_date'=>$all_time[0],
'schedule_day'=>$start_time,
'created_at'=>Carbon::now(),
'updated_at'=>Carbon::now(),
];
$shcdule_id = Schedule::insertGetId($schedule_insert);
}
unset($schedule_insert['schedule_day']);
$schedule_insert['schedule_id'] =$shcdule_id;
$info = [];
for ($i = 0 ;$i<=2;$i++){
$mo_schedule = array_values($data[$i]);
foreach ($mo_schedule as $key=>$val){
if($key==0) continue;
$schedule_date = $start_time + $key;
$strtime = "$schedule_date";
$first_day = strtotime('this week');
$time_insert = $schedule_insert;
$time_insert['type'] = $i+1;
$real_time = date('Y-m-d',($first_day + ($key-1)*86400));
$time_insert['schedule_date'] = $real_time;
$time_insert['me_sure'] = 1;
foreach ($mo as $time_id){
$is_have = SchedulePeriod::where(['time_period_id'=>$time_id,'type'=>($i+1),'docter_id'=>$docter_id,'schedule_date'=>$real_time]);
if($is_have) break;
$time_insert['time_period_id'] = $time_id;
$info[] = $time_insert;
SchedulePeriod::insert($time_insert);
}
if($val){
$data['schedule_date'] = $start_time ;
}
}
}
DB::commit();
} catch (Exception $e){
DB::rollBack();
Log::info($e->getMessage());
}
return json_encode(['status'=>200,'msg'=>'插入成功','data'=>count($info)]);
}
//获取用户信息
public function getScheduleInfo()
{
$docter_id = request('docter_id');
$org_id = request('org_id');
$is_docter = CdmsUsers::where('docter_id',$docter_id);
$role = 1;
if(empty($org_id) && empty($docter_id)){
return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
}
if($is_docter){
$role = 2;
}
if($role == 1){
$ids = DocterOrganization::where(['docter_id'=>$docter_id])->pluck('organization_id');
$list = Organization::whereIn('id',$ids)->get(['id as value','name as label'])->toArray();
$name = Organization::where('id',$org_id)->value('name');
$user_id = $org_id;
} else {
$ids = DocterOrganization::where(['docter_id'=>$docter_id])->pluck('organization_id');
$list = Organization::whereIn('id',$ids)->get(['id as value','name as label'])->toArray();
$name = Docter::where('id',$docter_id)->value('name');
$user_id = $docter_id;
}
$data['user_id'] = $user_id;
$data['name'] = $name;
$data['role'] = $role;
$data['list'] = $list;
return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
}
//获取图文订单
public function get_chat_order()
{
$org_id = 1;
// $docter_id = 1;
$docter_id = request('docter_id');
if(empty($docter_id)){
return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
}
$list = Order::where(['organization_id'=>$org_id,'docter_id'=>$docter_id,'order_status'=>3])->with('orderUser')->distinct('user_id')->get('user_id');
$user_list = [];
foreach ($list as $val){
$user_list[] = [
'id'=>$val->user_id,
'avatar'=>$val->orderUser->avatar,
'name'=>$val->orderUser->nickname,
];
}
$data['docter'] = Docter::where('id',$docter_id)->first(['id','avatar','name']);
$data['order_list'] = $user_list;
return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
}
}