Exemplo n.º 1
0
        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"));
        }
Exemplo n.º 2
0
 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));
 }
Exemplo n.º 3
0
        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);
                    }
                }
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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);
            }
        }