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); } }