Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }