public void TestWtkProfileMapToTimesheetCorrectly(int count, int year, int month, int day) { var data = new List <PayRule>(); for (int i = 1; i <= count; i++) { data.Add(new PayRule { PersonNumber = "PersonNumber" + i }); } var mapper = new TimesheetMapper(); var timesheetCriteria = new TimesheetCriteria { PayRules = data, StartDate = new DateTime(year, month, day), EndDate = new DateTime(year, month, day + 1), TimeFrameName = "9" }; var result = mapper.Map(timesheetCriteria); Assert.NotNull(result); Assert.AreEqual(count, result.Count); for (int i = 1; i <= count; i++) { Assert.AreEqual(new DateTime(year, month, day), result[i - 1].PeriodStartDate); Assert.AreEqual(new DateTime(year, month, day + 1), result[i - 1].PeriodEndDate); Assert.AreEqual("PersonNumber" + i, result[i - 1].PersonNumber); Assert.AreEqual("9", result[i - 1].TimeFrameName); } }
public async Task SaveAsync(IEnumerable <TimesheetModel> entries) { var employees = await DataContext.People.Where(x => !x.Deleted).ToListAsync(); try { foreach (var entry in entries) { Timesheet timesheet = null; if (entry.Id == Guid.Empty) { // No point creating timesheet with an empty value if (entry.TimesheetEmployeeHours == null) { continue; } } else { timesheet = await DataContext.Timesheets.FirstOrDefaultAsync(x => x.Id == entry.Id); } var employee = employees.FirstOrDefault(x => x.Name.Trim() == entry.PersonName.Trim()); // Try find the target using person id and person name if (timesheet == null) { var criteria = new TimesheetCriteria { PersonId = employee.Id, PersonName = employee.Name, TimesheetDate = entry.TimesheetDate, Deleted = false }; timesheet = await DataContext.Timesheets.Query(criteria).FirstOrDefaultAsync(); } // Finally create the target if we can't find it if (timesheet == null) { timesheet = new Timesheet { Id = SequentialGuid.NewGuid(), PersonId = employee.Id, PersonName = employee.Name, TimesheetDate = entry.TimesheetDate }; DataContext.Timesheets.Add(timesheet); } timesheet.TimesheetEmployeeHours = entry.TimesheetEmployeeHours; } await DataContext.SaveChangesAsync(); } catch (Exception ex) { Logger.LogError("Error saving user timesheets", ex); } }