dbfdg
can('manage timesheet'))
{
$project_ids = $authuser->projects()->pluck('project_id')->toArray();
if(in_array($project_id, $project_ids))
{
$project = Project::where('id', $project_id)->first();
return view('projects.timesheets.index', compact('project'));
}
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function appendTimesheetTaskHTML(Request $request)
{
$project_id = $request->has('project_id') ? $request->project_id : null;
$task_id = $request->has('task_id') ? $request->task_id : null;
$selected_dates = $request->has('selected_dates') ? $request->selected_dates : null;
$returnHTML = '';
$project = Project::find($project_id);
if($project)
{
$task = ProjectTask::find($task_id);
if($task && $selected_dates)
{
$twoDates = explode(' - ', $selected_dates);
$first_day = $twoDates[0];
$seventh_day = $twoDates[1];
$period = CarbonPeriod::create($first_day, $seventh_day);
$returnHTML .= '
' . $task->name . ' | ';
foreach($period as $key => $dateobj)
{
$returnHTML .= '
';
}
$returnHTML .= ' |
';
}
}
return response()->json(
[
'success' => true,
'html' => $returnHTML,
]
);
}
public function filterTimesheetTableView(Request $request)
{
$sectionTaskArray = [];
// $authuser = Auth::user();
$project = Project::find($request->project_id);
if(Auth::user() != null){
$authuser = Auth::user();
}else{
$authuser = User::where('id',$project->created_by)->first();
}
$week = $request->week;
$project_id = $request->project_id;
$timesheet_type = 'task';
if($request->has('week') && $request->has('project_id'))
{
if($authuser->type == 'client'){
$project_ids = Project::where('client_id',\Auth::user()->id)->pluck('id','id')->toArray();
}else{
$project_ids = $authuser->projects()->pluck('project_id','project_id')->toArray();
}
$timesheets = Timesheet::select('timesheets.*')->join('projects', 'projects.id', '=', 'timesheets.project_id');
if($timesheet_type == 'task')
{
$projects_timesheet = $timesheets->join('project_tasks', 'project_tasks.id', '=', 'timesheets.task_id');
}
if($project_id == '0')
{
$projects_timesheet = $timesheets->whereIn('projects.id', $project_ids);
}
else if(in_array($project_id, $project_ids))
{
$projects_timesheet = $timesheets->where('timesheets.project_id', $project_id);
}
$days = Utility::getFirstSeventhWeekDay($week);
$first_day = $days['first_day'];
$seventh_day = $days['seventh_day'];
$onewWeekDate = $first_day->format('M d') . ' - ' . $seventh_day->format('M d, Y');
$selectedDate = $first_day->format('Y-m-d') . ' - ' . $seventh_day->format('Y-m-d');
$projects_timesheet = $projects_timesheet->whereDate('date', '>=', $first_day->format('Y-m-d'))->whereDate('date', '<=', $seventh_day->format('Y-m-d'));
if($project_id == '0')
{
$timesheets = $projects_timesheet->get()->groupBy(
[
'project_id',
'task_id',
]
)->toArray();
}
else if(in_array($project_id, $project_ids))
{
$timesheets = $projects_timesheet->get()->groupBy('task_id')->toArray();
}
$returnHTML = Project::getProjectAssignedTimesheetHTML($projects_timesheet, $timesheets, $days, $project_id);
$totalrecords = count($timesheets);
if($project_id != '0')
{
$task_ids = array_keys($timesheets);
$project = Project::find($project_id);
$sections = ProjectTask::getAllSectionedTaskList($request, $project, [], $task_ids);
foreach($sections as $key => $section)
{
$taskArray = [];
$sectionTaskArray[$key]['section_id'] = $section['section_id'];
$sectionTaskArray[$key]['section_name'] = $section['section_name'];
foreach($section['sections'] as $taskkey => $task)
{
$taskArray[$taskkey]['task_id'] = $task['id'];
$taskArray[$taskkey]['task_name'] = $task['taskinfo']['task_name'];
}
$sectionTaskArray[$key]['tasks'] = $taskArray;
}
}
return response()->json(
[
'success' => true,
'totalrecords' => $totalrecords,
'selectedDate' => $selectedDate,
'sectiontasks' => $sectionTaskArray,
'onewWeekDate' => $onewWeekDate,
'html' => $returnHTML,
]
);
}
}
public function timesheetCreate(Request $request)
{
if(\Auth::user()->can('create timesheet'))
{
$parseArray = [];
$authuser = Auth::user();
$project_id = $request->has('project_id') ? $request->project_id : null;
$task_id = $request->has('task_id') ? $request->task_id : null;
$selected_date = $request->has('date') ? $request->date : null;
$user_id = $request->has('date') ? $request->user_id : null;
$created_by = $user_id != null ? $user_id : $authuser->id;
$projects = $authuser->projects();
if($project_id)
{
$project = $projects->where('projects.id', '=', $project_id)->pluck('projects.project_name', 'projects.id')->all();
if(!empty($project) && count($project) > 0)
{
$project_id = key($project);
$project_name = $project[$project_id];
$task = ProjectTask::where(
[
'project_id' => $project_id,
'id' => $task_id,
]
)->pluck('name', 'id')->all();
$task_id = key($task);
$task_name = $task[$task_id];
$tasktime = Timesheet::where('task_id', $task_id)->where('created_by', $created_by)->pluck('time')->toArray();
$totaltasktime = Utility::calculateTimesheetHours($tasktime);
$totalhourstimes = explode(':', $totaltasktime);
$totaltaskhour = $totalhourstimes[0];
$totaltaskminute = $totalhourstimes[1];
$parseArray = [
'project_id' => $project_id,
'project_name' => $project_name,
'task_id' => $task_id,
'task_name' => $task_name,
'date' => $selected_date,
'totaltaskhour' => $totaltaskhour,
'totaltaskminute' => $totaltaskminute,
];
return view('projects.timesheets.create', compact('parseArray'));
}
}
else
{
$projects = $projects->get();
return view('projects.timesheets.create', compact('projects', 'project_id', 'selected_date'));
}
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function timesheetStore(Request $request)
{
if(\Auth::user()->can('create timesheet'))
{
$authuser = Auth::user();
$project = Project::find($request->project_id);
if($project)
{
$request->validate(
[
'date' => 'required',
'time_hour' => 'required',
'time_minute' => 'required',
]
);
$hour = $request->time_hour;
$minute = $request->time_minute;
$time = ($hour != '' ? ($hour < 10 ? '0' + $hour : $hour) : '00') . ':' . ($minute != '' ? ($minute < 10 ? '0' + $minute : $minute) : '00');
$timesheet = new Timesheet();
$timesheet->project_id = $request->project_id;
$timesheet->task_id = $request->task_id;
$timesheet->date = $request->date;
$timesheet->time = $time;
$timesheet->description = $request->description;
$timesheet->created_by = $authuser->id;
$timesheet->save();
return redirect()->back()->with('success', __('Timesheet Created Successfully!'));
}
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function timesheetEdit(Request $request, $project_id, $timesheet_id)
{
if(\Auth::user()->can('edit timesheet'))
{
$authuser = Auth::user();
$task_id = $request->has('task_id') ? $request->task_id : null;
$user_id = $request->has('date') ? $request->user_id : null;
$created_by = $user_id != null ? $user_id : $authuser->id;
$project_view = '';
if($request->has('project_view'))
{
$project_view = $request->project_view;
}
$projects = $authuser->projects();
$timesheet = Timesheet::find($timesheet_id);
if($timesheet)
{
$project = $projects->where('projects.id', '=', $project_id)->pluck('projects.project_name', 'projects.id')->all();
if(!empty($project) && count($project) > 0)
{
$project_id = key($project);
$project_name = $project[$project_id];
$task = ProjectTask::where(
[
'project_id' => $project_id,
'id' => $task_id,
]
)->pluck('name', 'id')->all();
$task_id = key($task);
$task_name = $task[$task_id];
$tasktime = Timesheet::where('task_id', $task_id)->where('created_by', $created_by)->pluck('time')->toArray();
$totaltasktime = Utility::calculateTimesheetHours($tasktime);
$totalhourstimes = explode(':', $totaltasktime);
$totaltaskhour = $totalhourstimes[0];
$totaltaskminute = $totalhourstimes[1];
$time = explode(':', $timesheet->time);
$parseArray = [
'project_id' => $project_id,
'project_name' => $project_name,
'task_id' => $task_id,
'task_name' => $task_name,
'time_hour' => $time[0] < 10 ? $time[0] : $time[0],
'time_minute' => $time[1] < 10 ? $time[1] : $time[1],
'totaltaskhour' => $totaltaskhour,
'totaltaskminute' => $totaltaskminute,
];
return view('projects.timesheets.edit', compact('timesheet', 'parseArray'));
}
}
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function timesheetUpdate(Request $request, $timesheet_id)
{
if(\Auth::user()->can('edit timesheet'))
{
$project = Project::find($request->project_id);
if($project)
{
$request->validate(
[
'date' => 'required',
'time_hour' => 'required',
'time_minute' => 'required',
]
);
$hour = $request->time_hour;
$minute = $request->time_minute;
$time = ($hour != '' ? ($hour < 10 ? '0' + $hour : $hour) : '00') . ':' . ($minute != '' ? ($minute < 10 ? '0' + $minute : $minute) : '00');
$timesheet = Timesheet::find($timesheet_id);
$timesheet->project_id = $request->project_id;
$timesheet->task_id = $request->task_id;
$timesheet->date = $request->date;
$timesheet->time = $time;
$timesheet->description = $request->description;
$timesheet->save();
return redirect()->back()->with('success', __('Timesheet Updated Successfully!'));
}
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function timesheetDestroy($timesheet_id)
{
if(\Auth::user()->can('delete timesheet'))
{
$timesheet = Timesheet::find($timesheet_id);
if($timesheet)
{
$timesheet->delete();
}
return redirect()->back()->with('success', __('Timesheet deleted Successfully!'));
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function timesheetList()
{
return view('projects.timesheet_list');
}
public function timesheetListGet(Request $request)
{
$authuser = Auth::user();
$week = $request->week;
if($request->has('week') && $request->has('project_id'))
{
$project_id = $request->project_id;
$project_ids = $authuser->projects()->pluck('project_id')->toArray();
$timesheets = Timesheet::select('timesheets.*')->join('projects', 'projects.id', '=', 'timesheets.project_id');
$projects_timesheet = $timesheets->join('project_tasks', 'project_tasks.id', '=', 'timesheets.task_id');
if($project_id == '0')
{
$projects_timesheet = $timesheets->whereIn('projects.id', $project_ids);
}
else if(in_array($project_id, $project_ids))
{
$projects_timesheet = $timesheets->where('timesheets.project_id', $project_id);
}
$days = Utility::getFirstSeventhWeekDay($week);
$first_day = $days['first_day'];
$seventh_day = $days['seventh_day'];
$onewWeekDate = $first_day->format('M d') . ' - ' . $seventh_day->format('M d, Y');
$selectedDate = $first_day->format('Y-m-d') . ' - ' . $seventh_day->format('Y-m-d');
$projects_timesheet = $projects_timesheet->whereDate('date', '>=', $first_day->format('Y-m-d'))->whereDate('date', '<=', $seventh_day->format('Y-m-d'));
if($project_id == '0')
{
$timesheets = $projects_timesheet->get()->groupBy(
[
'project_id',
'task_id',
]
)->toArray();
}
else if(in_array($project_id, $project_ids))
{
$timesheets = $projects_timesheet->get()->groupBy('task_id')->toArray();
}
$returnHTML = Project::getProjectAssignedTimesheetHTML($projects_timesheet, $timesheets, $days, $project_id);
$totalrecords = count($timesheets);
if($project_id != '0')
{
$task_ids = array_keys($timesheets);
$project = Project::find($project_id);
$sections = ProjectTask::getAllSectionedTaskList($request, $project, [], $task_ids);
foreach($sections as $key => $section)
{
$taskArray = [];
$sectionTaskArray[$key]['section_id'] = $section['section_id'];
$sectionTaskArray[$key]['section_name'] = $section['section_name'];
foreach($section['sections'] as $taskkey => $task)
{
$taskArray[$taskkey]['task_id'] = $task['id'];
$taskArray[$taskkey]['task_name'] = $task['taskinfo']['task_name'];
}
$sectionTaskArray[$key]['tasks'] = $taskArray;
}
}
return response()->json(
[
'success' => true,
'totalrecords' => $totalrecords,
'selectedDate' => $selectedDate,
'sectiontasks' => $sectionTaskArray,
'onewWeekDate' => $onewWeekDate,
'html' => $returnHTML,
]
);
}
}
}
|