public async Task <string> UpdateTaskAsync(UpdateTaskData card) { var task = await TryFindTask((int)card.TaskId); var time = DateTime.Now; task.Header = card.Header; task.Description = card.Description; task.Status = (await uow.StatusRepository.GetByConditionAsync(x => x.Name == card.CardStatus)).FirstOrDefault(); task.CardStatus = (await uow.CardStatusRepository.GetByConditionAsync(x => x.Name == card.CardStatus)).FirstOrDefault(); task.CreatedAt = DateTime.Parse(card.CreatedAt); task.UpdatedAt = time; if (card.Deadline == null) { task.Deadline = null; } else { task.Deadline = DateTime.Parse(card.Deadline); } task.Progress = card.Progress; task.Priority = (await uow.PriorityRepository.GetByConditionAsync(x => x.Name == card.Priority)).FirstOrDefault(); task.Difficulty = (await uow.DifficultyRepository.GetByConditionAsync(x => x.Name == card.Difficulty)).FirstOrDefault(); uow.TaskRepository.Update(task); return(time.ToString("yyyy-MM-ddTHH:mm:ss.fffffK")); }
public async Task <string> UpdateTaskAsync(UpdateTaskData task) { Services.Validation.Validate.NotNull(task); Services.Validation.Validate.NotNull(task.TaskId, "Task id"); Services.Validation.Validate.NotNull(task.Header, "Task header"); Services.Validation.Validate.NotNull(task.TaskStatus, "Task status"); Services.Validation.Validate.NotNull(task.CardStatus, "Task card status"); return(await ts.UpdateTaskAsync(task)); }
private async Task ChangeStatusAndExecutors(UpdateTaskData data, User user, bool newtask, int permissions) { var needPermissionBits = -1; var res = permissions & needPermissionBits; //если админ то итак нихуя неизменится. нахера флаг с новой таской. хм //if (res != needPermissionBits && !newtask) if (res != needPermissionBits) { //Меняем статус if (data.StatusId != null) { //меняем исполнителя, если статус подходящий int brigadeType = 999; //тут начинается ебоклюйство с правами. // бригады локомативщиков 6 needPermissionBits = 64; res = permissions & needPermissionBits; if (res == needPermissionBits) { if (data.StatusId == (int)TaskStatus.Remake) { brigadeType = (int)BrigadeType.Depo; } } // приемщиков 8 needPermissionBits = 256; res = permissions & needPermissionBits; if (res == needPermissionBits) { if (data.StatusId == (int)TaskStatus.Confirmation) { brigadeType = (int)BrigadeType.Locomotiv; } if (data.StatusId == (int)TaskStatus.Remake) { brigadeType = (int)BrigadeType.Depo; } } if (brigadeType != 999) { var trainTaskExecutor = new TrainTaskExecutor { TrainTaskId = data.TraintaskId, BrigadeType = (BrigadeType)brigadeType, UserId = user.Id }; var sqlRExecutor = new ExecutorRepository(_logger); await sqlRExecutor.AddNewExecutorToTask(trainTaskExecutor, user, false); } } } }
public async Task UpdateTask(UpdateTaskData data, User user, bool newtask = false, bool timeShift = true) { var sqlRExecutor = new ExecutorRepository(_logger); var sqlRTaskStatus = new TaskStatusRepository(_logger); var sqlRComment = new CommentRepository(_logger); var sqlRDocuments = new DocumentRepository(_logger); var sqlRTask = new TaskRepository(_logger); int permissions = user.Role.Permissions; await sqlRTask.UpdateEditDate(data.TraintaskId); //Надо добавить к таске нового исполнителя data.TrainTaskExecutorsId = (await sqlRExecutor.AddNewExecutorToTask(data, user, timeShift)).Id; //Надо поставить статус указанный изначально, а потом запустить автосмену, в случае это не не админ с новой задачей await ChangeStatusAndExecutors(data, user, newtask, permissions); if (data.StatusId != null) { await sqlRTaskStatus.ChangeStatusByTrainTaskId(data.TraintaskId, data.StatusId.Value, user, newtask, timeShift); } //Добавляем комент var commentId = 0; data.CommentText = data.CommentText ?? ""; commentId = await sqlRComment.AddCommentByTrainTaskId(data.TraintaskId, data.CommentText, user); //Добавляем файлы, если есть комент if (data.FilesId != null && data.FilesId.Length > 0 && commentId != 0) { await sqlRDocuments.AddToCommentId(data.FilesId, commentId); } }
public async Task <TrainTaskWithUpdateStatusDto> TrainTaskAdd(TrainTaskaddUi input, User user) { var sqlRTask = new TaskRepository(_logger); var sqlRStatus = new TaskStatusRepository(_logger); var sqlREquipmentModel = new EquipmentModelsRepository(_logger); var sqlREquipment = new EquipmentRepository(_logger); //Проверяем по [CarriageId] и [EquipmentModelId] наличие подобной незакрытой задачи (EquipmentId c UI это EquipmentModelId...) var allTasks = await sqlRTask.GetAllTrainTask(); //TODO перенести логику выборки в sql allTasks = allTasks.Where(e => e.CarriageId == input.CarriageId && e.EquipmentModelId == input.EquipmentId) .ToList(); var trainTaskToAdd = await CheckTrainTaskExist(sqlRStatus, allTasks); //Начинаем транзакцию using (var transaction = new TransactionScope(asyncFlowOption: TransactionScopeAsyncFlowOption.Enabled)) { var isUpdated = true; if (trainTaskToAdd == null) { //Делаем пустую таску trainTaskToAdd = await sqlRTask.AddTrainTaskWithoutAttributes(input, user); isUpdated = false; } await sqlRTask.UpdateEditDate(trainTaskToAdd.Id); //добавляем новый атрибут к существующей или свеже созданной var newTaskAtribute = await sqlRTask.AddAttributesToTrainTask(trainTaskToAdd, input); trainTaskToAdd.TrainTaskAttributes = new List <TrainTaskAttribute> { newTaskAtribute }; //прихуярить статус var updateTaskData = new UpdateTaskData { StatusId = (int)input.TaskStatus, TraintaskId = trainTaskToAdd.Id, FilesId = input.FilesId, CommentText = input.Text, TrainTaskExecutorsId = (int)input.Executor }; await UpdateTask(updateTaskData, user, true); var equipmentModel = await sqlREquipmentModel.ById(trainTaskToAdd.EquipmentModelId); var equipment = await sqlREquipment.ById(equipmentModel.EquipmentId); transaction.Complete(); var result = new TrainTaskWithUpdateStatusDto { TrainTask = trainTaskToAdd, IsUpdated = isUpdated, EquipmentName = equipment.Name }; return(result); } }