public void AddRange(WorkingHour[] workingHours) { RepositoryAction.Transaction((c, t) => { var dao = new WorkingHourDao(c, t); dao.Delete(workingHours.Select(w => w.Ymd.Value).Distinct().ToArray()); foreach (var row in workingHours.Where(w => w.IsEmpty == false)) { dao.Insert(WorkingHourTableRow.FromDomainObjects(row)); } }); }
public EmpHourController() { dao = new WorkingHourDao(); }
public DailyWorkResults SelectByYearMonth(YearMonth yearMonth) { var list = new List <WorkingTimeRecordForReport>(); var listWorkingHour = new List <WorkingHour>(); RepositoryAction.Query(c => { var workTaskDao = new WorkTaskDao(c, null); var workingTimeDao = new WorkingTimeDao(c, null); var processes = new WorkProcessDao(c, null).SelectAll() .Select(d => d.ToDomainObject()) .ToDictionary(p => p.Id); var products = new ProductDao(c, null).SelectAll() .Select(d => d.ToDomainObject()) .ToDictionary(p => p.Id); var clients = new ClientDao(c, null).SelectAll() .Select(d => d.ToDomainObject()) .ToDictionary(p => p.Id); var param = new { start = yearMonth.StartDate.ToString("yyyyMMdd"), end = yearMonth.EndDate.ToString("yyyyMMdd") }; var rows = c.Query <TableRow>(sql, param); foreach (var task in rows) { processes.TryGetValue(new Identity <WorkProcess>(task.WorkProcessId), out WorkProcess targetProcess); products.TryGetValue(new Identity <Product>(task.ProductId), out Product targetProduct); clients.TryGetValue(new Identity <Client>(task.ClientId), out Client targetClient); if (string.IsNullOrEmpty(task.EndTime)) { continue; } var dto = new WorkingTimeRecordForReport { Ymd = new YmdString(task.Ymd), TaskCategory = task.TaskCategory, WorkProcess = targetProcess, Product = targetProduct ?? Product.Empty, Client = targetClient ?? Client.Empty, StartDateTime = DateTimeParser.ConvertFromYmdHHmmss(task.Ymd, task.StartTime).Value, EndDateTime = DateTimeParser.ConvertFromYmdHHmmss(task.Ymd, task.EndTime).Value, Title = task.Title, WorkingTimeId = new Identity <WorkingTimeRange>(task.WorkingTimeId), WorkTaskId = new Identity <WorkTask>(task.WorkTaskId), IsTemporary = task.IsTemporary == "1", IsScheduled = string.IsNullOrEmpty(task.ImportKey) == false, }; list.Add(dto); } var workingHourDao = new WorkingHourDao(c, null); listWorkingHour.AddRange(workingHourDao.SelectByYmdRange(param.start, param.end).Select(r => r.ConvertToDomainObjects())); }); return(new DailyWorkResults { WorkingTimeRecordForReports = list.OrderBy(t => t.StartDateTime).ToArray(), WorkingHours = listWorkingHour.OrderBy(h => h.Ymd).ToArray(), }); }