public TimesheetWeekSummary_Dto GetWeekSummary(int year, int month, int week, Guid employeeId) { try { TimesheetWeekSummary weekSheet = TimesheetWeekSummaryRepo.WithDetails(x => x.WeeklyJobSummaries).Single(c => c.Year == year && c.Month == month && c.Week == week && c.EmployeeId == employeeId); return(ObjectMapper.Map <TimesheetWeekSummary, TimesheetWeekSummary_Dto>(weekSheet)); } catch (Exception ex) { return(null); } }
public async Task <IActionResult> OnPostSaveTimesheet(TimesheetWeekSummary_Dto weeksheetDto) { try { if (TimesheetAppService.Repository.Any(x => x.EmployeeId == weeksheetDto.EmployeeId && x.Year == weeksheetDto.Year && x.Month == weeksheetDto.Month)) { Timesheet timesheetToUpdate; if (weeksheetDto.Id == -1) { timesheetToUpdate = TimesheetAppService.Repository.WithDetails().First(x => x.EmployeeId == weeksheetDto.EmployeeId && x.Year == weeksheetDto.Year && x.Month == weeksheetDto.Month); weeksheetDto.Id = 0; TimesheetWeekSummary weeksheetToAdd = ObjectMapper.Map <TimesheetWeekSummary_Dto, TimesheetWeekSummary>(weeksheetDto); timesheetToUpdate.WeeklySummaries.Add(weeksheetToAdd); var updated = await TimesheetAppService.Repository.UpdateAsync(timesheetToUpdate); } else { TimesheetWeekSummary weeksheetToUpdate = TimesheetWeekSummaryRepo.WithDetails(x => x.WeeklyJobSummaries).First(x => x.Id == weeksheetDto.Id); weeksheetToUpdate.SumSun = weeksheetDto.SumSun; weeksheetToUpdate.SumMon = weeksheetDto.SumMon; weeksheetToUpdate.SumTue = weeksheetDto.SumTue; weeksheetToUpdate.SumWed = weeksheetDto.SumWed; weeksheetToUpdate.SumThu = weeksheetDto.SumThu; weeksheetToUpdate.SumFri = weeksheetDto.SumFri; weeksheetToUpdate.SumSat = weeksheetDto.SumSat; weeksheetToUpdate.TotalWeekHours = weeksheetDto.TotalWeekHours; List <TimesheetWeekJobSummary> newJobSumaries = ObjectMapper.Map <ICollection <TimesheetWeekJobSummary_Dto>, List <TimesheetWeekJobSummary> >(weeksheetDto.WeeklyJobSummaries); for (int i = 0; i < newJobSumaries.Count; i++) { if (!weeksheetToUpdate.WeeklyJobSummaries.Any(x => x.Id == newJobSumaries[i].Id)) { weeksheetToUpdate.WeeklyJobSummaries.Add(newJobSumaries[i]); } else { TimesheetWeekJobSummary timesheetWeekJobSummary = newJobSumaries[i]; var jobSummary = weeksheetToUpdate.WeeklyJobSummaries.First(x => x.Id == timesheetWeekJobSummary.Id); jobSummary.ChargeabilityId = timesheetWeekJobSummary.ChargeabilityId; jobSummary.ServiceLineId = timesheetWeekJobSummary.ServiceLineId; jobSummary.ClientId = timesheetWeekJobSummary.ClientId; jobSummary.Sun = timesheetWeekJobSummary.Sun; jobSummary.Mon = timesheetWeekJobSummary.Mon; jobSummary.Tue = timesheetWeekJobSummary.Tue; jobSummary.Wed = timesheetWeekJobSummary.Wed; jobSummary.Thu = timesheetWeekJobSummary.Thu; jobSummary.Fri = timesheetWeekJobSummary.Fri; jobSummary.Sat = timesheetWeekJobSummary.Sat; jobSummary.TotalJobWeekHours = timesheetWeekJobSummary.TotalJobWeekHours; jobSummary.IsSubmitted = timesheetWeekJobSummary.IsSubmitted; weeksheetToUpdate.IsSubmitted = timesheetWeekJobSummary.IsSubmitted; weeksheetToUpdate.Description = weeksheetDto.Description; jobSummary.IsDeleted = timesheetWeekJobSummary.IsDeleted; var updated = await TimesheetWeekJobSummaryRepo.UpdateAsync(jobSummary); } await TimesheetWeekSummaryRepo.UpdateAsync(weeksheetToUpdate); } } timesheetToUpdate = TimesheetAppService.Repository.WithDetails().First(x => x.EmployeeId == weeksheetDto.EmployeeId && x.Year == weeksheetDto.Year && x.Month == weeksheetDto.Month); timesheetToUpdate.Week1Hours = timesheetToUpdate.WeeklySummaries.Where(x => x.Week == 1 && x.IsSubmitted).Sum(x => x.TotalWeekHours); timesheetToUpdate.Week2Hours = timesheetToUpdate.WeeklySummaries.Where(x => x.Week == 2 && x.IsSubmitted).Sum(x => x.TotalWeekHours); timesheetToUpdate.Week3Hours = timesheetToUpdate.WeeklySummaries.Where(x => x.Week == 3 && x.IsSubmitted).Sum(x => x.TotalWeekHours); timesheetToUpdate.Week4Hours = timesheetToUpdate.WeeklySummaries.Where(x => x.Week == 4 && x.IsSubmitted).Sum(x => x.TotalWeekHours); timesheetToUpdate.Week5Hours = timesheetToUpdate.WeeklySummaries.Where(x => x.Week == 5 && x.IsSubmitted).Sum(x => x.TotalWeekHours); timesheetToUpdate.TotalMonthHours = timesheetToUpdate.Week1Hours + timesheetToUpdate.Week2Hours + timesheetToUpdate.Week3Hours + timesheetToUpdate.Week4Hours + timesheetToUpdate.Week5Hours; await TimesheetAppService.Repository.UpdateAsync(timesheetToUpdate); } else { Timesheet_Dto timesheetToCreateDto = new Timesheet_Dto(); timesheetToCreateDto.Year = weeksheetDto.Year; timesheetToCreateDto.Month = weeksheetDto.Month; timesheetToCreateDto.EmployeeId = weeksheetDto.EmployeeId; weeksheetDto.Id = 0; weeksheetDto.Dated = DateTime.Now; timesheetToCreateDto.WeeklySummaries = new List <TimesheetWeekSummary_Dto>() { weeksheetDto }; timesheetToCreateDto.Dated = DateTime.Now; switch (weeksheetDto.Week) { case 1: timesheetToCreateDto.Week1Hours = weeksheetDto.TotalWeekHours; break; case 2: timesheetToCreateDto.Week2Hours = weeksheetDto.TotalWeekHours; break; case 3: timesheetToCreateDto.Week3Hours = weeksheetDto.TotalWeekHours; break; case 4: timesheetToCreateDto.Week4Hours = weeksheetDto.TotalWeekHours; break; case 5: timesheetToCreateDto.Week5Hours = weeksheetDto.TotalWeekHours; break; } timesheetToCreateDto.TotalMonthHours = timesheetToCreateDto.Week1Hours + timesheetToCreateDto.Week2Hours + timesheetToCreateDto.Week3Hours + timesheetToCreateDto.Week4Hours + timesheetToCreateDto.Week5Hours; Timesheet_Dto timesheetCreatedDto = await TimesheetAppService.CreateAsync(timesheetToCreateDto); } } catch (Exception ex) { return(StatusCode(500)); } return(new OkResult()); }