Esempio n. 1
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);
                    }
                }
            }
        }
Esempio n. 2
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);
            }
        }