public bool NeedToSummarize(WorkingTimeRecordForReport dailyWorkTaskUnit) { if (dailyWorkTaskUnit.WorkTaskId == TaskId) { return(true); } if ((IsTemporary && dailyWorkTaskUnit.IsTemporary) || (IsScheduled && dailyWorkTaskUnit.IsScheduled)) { if (TaskCategory == dailyWorkTaskUnit.TaskCategory && Product.Id == dailyWorkTaskUnit.Product.Id && Client.Id == dailyWorkTaskUnit.Client.Id && WorkProcess.Id == dailyWorkTaskUnit.WorkProcess.Id && Title == dailyWorkTaskUnit.Title) { return(true); } else { return(false); } } else { return(false); } }
public void EditWorkTask(WorkingTimeRecordForReport record) { var targetData = _WorkTaskModel.SelectWorkTask(record.WorkTaskId); var editDialogVm = new WorkTaskEditDialogViewModel(targetData); editDialogVm.ShowDeleteButton.Value = false; var result = TransitionHelper.Current.TransitionModal <TaskEditDialog>(editDialogVm); if (result == ModalTransitionResponse.Yes) { if (editDialogVm.NeedDelete) { _WorkTaskModel.DeleteWorkTask(record.WorkTaskId); } else { var inputValue = editDialogVm.TaskCardViewModel.DomainModel; _WorkTaskModel.EditWorkTask(inputValue); } _Model.Load(); } }
public DailyWorkTaskUnit(WorkingTimeRecordForReport workingTime) { TaskId = workingTime.WorkTaskId; TaskCategory = workingTime.TaskCategory; Product = workingTime.Product; Client = workingTime.Client; WorkProcess = workingTime.WorkProcess; Title = workingTime.Title; IsTemporary = workingTime.IsTemporary; IsScheduled = workingTime.IsScheduled; }
public void AddWorkTask(WorkingTimeRecordForReport workingTime) { var targetTask = _DailyWorkTaskUnits.FirstOrDefault(t => t.NeedToSummarize(workingTime)); if (targetTask == null) { targetTask = new DailyWorkTaskUnit(workingTime); _DailyWorkTaskUnits.Add(targetTask); } targetTask.AddWorkingTime(workingTime.ConvertToWorkingTimeRange()); }
public void 日複数レコードあり_同一種別含まない() { var records = new WorkingTimeRecordForReport[] { new WorkingTimeRecordForReport { Ymd = _Ymd0501, TaskCategory = TaskCategory.Develop, WorkProcess = _Process01, Product = _Product01, Client = _Client01, StartDateTime = DateTimeParser.ConvertFromYmdHHmmss(_Ymd0501.Value, "100000").Value, EndDateTime = DateTimeParser.ConvertFromYmdHHmmss(_Ymd0501.Value, "103000").Value, Title = "サンプル作業1", WorkingTimeId = new Identity <WorkingTimeRange>(1), WorkTaskId = new Identity <WorkTask>(1), }, new WorkingTimeRecordForReport { Ymd = _Ymd0501, TaskCategory = TaskCategory.Develop, WorkProcess = _Process02, Product = _Product01, Client = _Client01, StartDateTime = DateTimeParser.ConvertFromYmdHHmmss(_Ymd0501.Value, "103000").Value, EndDateTime = DateTimeParser.ConvertFromYmdHHmmss(_Ymd0501.Value, "113000").Value, Title = "サンプル作業2", WorkingTimeId = new Identity <WorkingTimeRange>(2), WorkTaskId = new Identity <WorkTask>(2), }, }; var list = _MonthlyReportBuilder.Build(new DailyWorkResults { WorkingTimeRecordForReports = records }); Assert.IsTrue(list.Length == 31); Assert.IsTrue(list[0].WorkYmd == _Ymd0501.Value); Assert.IsTrue(list[0].DailyWorkTaskUnits.Count == 2); Assert.IsTrue(list[0].DailyWorkTaskUnits[0].TaskId.Value == 1); Assert.IsTrue(list[0].DailyWorkTaskUnits[0].WorkingTimeRanges.Count == 1); Assert.IsTrue(list[0].DailyWorkTaskUnits[0].TotalWorkMinutes == 30); Assert.IsTrue(list[0].DailyWorkTaskUnits[0].Title == "サンプル作業1"); Assert.IsTrue(list[0].DailyWorkTaskUnits[1].TaskId.Value == 2); Assert.IsTrue(list[0].DailyWorkTaskUnits[1].WorkingTimeRanges.Count == 1); Assert.IsTrue(list[0].DailyWorkTaskUnits[1].TotalWorkMinutes == 60); Assert.IsTrue(list[0].DailyWorkTaskUnits[1].Title == "サンプル作業2"); }
public async void EditWorkTaskTime(WorkingTimeRecordForReport record) { var editDialogVm = new WorkingTimeRangeEditDialogViewModel(record.ConvertToWorkingTimeRange()); var view = new WorkingTimeRangeEditDialog { DataContext = editDialogVm }; //show the dialog var result = (bool?)await DialogHost.Show(view); if (result.HasValue && result.Value) { var editObj = editDialogVm.WorkingTimeViewModel.DomainModel; _WorkTaskModel.EditWorkingTime(editObj); _Model.Load(); } }
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(), }); }