protected override void Handle(StartOfficeTaskCommand request) { if (TaskRecorder.HasActiveTask) { DuplicateTaskValidator taskValidator = new DuplicateOfficeTaskValidator(TaskRecorder.ActiveTask, request.ProjectDto.ID); taskValidator.ValidateDuplicate(); } if (TaskService.AskBeforeStartNewTaskResult() == DialogResult.No) { return; } DateTime currentTime = Database.GetCurrentTime(); if (TaskRecorder.HasActiveTask) { TaskRepository.Finish(TaskRecorder.ActiveTask, currentTime); TaskRecorder.StopActiveTask(currentTime); } Project project = ProjectRepository.Load(request.ProjectDto.ID); OfficeTask newOfficeTask = TaskFactory.CreateOfficeTask(TaskRepository.NextIdentity(), project); TaskRepository.Save(newOfficeTask, currentTime); TaskRecorder.StartNewTask(newOfficeTask, currentTime); WorkTimer.Start(); }
public void Save(OfficeTask task, DateTime startDate) { using (var connection = database.GetConnection()) { try { const string query = @"INSERT INTO work_time(task_id, employee_id, project_id, start_time, end_time) VALUES(:id, :employee, :project, :start_time, :end_time)"; connection.Open(); using (var command = new OracleCommand(query, connection)) { command.Parameters.Add(new OracleParameter("id", OracleDbType.Int32, task.ID, ParameterDirection.Input)); command.Parameters.Add(new OracleParameter("employee", OracleDbType.Int32, systemUser.ID, ParameterDirection.Input)); command.Parameters.Add(new OracleParameter("project", OracleDbType.Int32, task.Project.ID, ParameterDirection.Input)); command.Parameters.Add(new OracleParameter("start_time", OracleDbType.Date, startDate, ParameterDirection.Input)); command.Parameters.Add(new OracleParameter("end_time", OracleDbType.Date, startDate, ParameterDirection.Input)); command.ExecuteNonQuery(); } } catch (OracleException ex) { throw new Exception("Dodanie nowego zadania do bazy danych zakończone niepowodzeniem." .Replace("/n", Environment.NewLine) + ex.Message); } } }
public ConvertTaskFinishedEventArgs(OfficeTask task) { FinishedTask = task; }