예제 #1
0
        private static UpdateUserDateDto GetTaskLastUpdate(TrainTaskComment lastComment, TrainTaskExecutor lastExecutor,
                                                           TrainTaskStatus lastStatus)
        {
            var items = new List <UpdateUserDateDto>();

            if (lastComment != null)
            {
                items.Add(new UpdateUserDateDto
                {
                    Date = lastComment.Date,
                    User = lastComment.User
                });
            }

            if (lastExecutor != null)
            {
                items.Add(new UpdateUserDateDto
                {
                    Date = lastExecutor.Date,
                    User = lastExecutor.User
                });
            }

            if (lastStatus != null)
            {
                items.Add(new UpdateUserDateDto
                {
                    Date = lastStatus.Date,
                    User = lastStatus.User
                });
            }

            return(items.Any() ? items.OrderBy(o => o.Date).Last() : null);
        }
예제 #2
0
        public async Task <int> ChangeStatusByTrainTaskId(int taskId, int statusId, User user, bool newtask = false, bool timeShift = false)
        {
            using (var conn = new SqlConnection(AppSettings.ConnectionString))
            {
                var permissions = user.Role.Permissions;

                var trainTaskStatus = new TrainTaskStatus
                {
                    TrainTaskId = taskId,
                    Status      = (TaskStatus)statusId,
                    UserId      = user.Id,
                    Date        = DateTime.Now
                };

                SqlMapper.AddTypeMap(typeof(DateTime), System.Data.DbType.DateTime2);

                var sql   = new TaskStatusSqls();
                var query = sql.AddStatusToTask;
                if (timeShift)
                {
                    query = sql.AddStatusToTaskTimeShift;
                }


                var id = await conn.QueryAsync <int>(query,
                                                     new
                {
                    date        = trainTaskStatus.Date,
                    status      = trainTaskStatus.Status,
                    trainTaskId = trainTaskStatus.TrainTaskId,
                    userId      = trainTaskStatus.UserId
                });

                //Админу никаких автосмен
                var needPermissionBits = -1;
                var res = permissions & needPermissionBits;
                if (res != needPermissionBits)
                {
                    if (!newtask)
                    {
                        // бригады локомативщиков 6
                        needPermissionBits = 64;
                        res = permissions & needPermissionBits;
                        if (res == needPermissionBits)
                        {
                            if (statusId == (int)TaskStatus.Remake)
                            {
                                await ChangeStatusByTrainTaskId(taskId, (int)TaskStatus.InWork, user);
                            }
                        }
                        // приемщиков 8
                        needPermissionBits = 256;
                        res = permissions & needPermissionBits;
                        if (res == needPermissionBits)
                        {
                            if (statusId == (int)TaskStatus.Remake)
                            {
                                await ChangeStatusByTrainTaskId(taskId, (int)TaskStatus.InWork, user);
                            }
                        }
                    }
                }

                return(id.FirstOrDefault());
            }
        }
예제 #3
0
        public async Task <List <HistoryTaskDto> > AddHistoryData(int id)
        {
            var list = new List <HistoryTaskDto>();

            var cr = new CommentRepository(_logger);
            var dr = new DocumentRepository(_logger);
            var er = new ExecutorRepository(_logger);
            var sr = new TaskStatusRepository(_logger);

            var comments = await cr.GetByTaskId(id);

            var docs = await dr.GetByTaskId(id);

            var executors = await er.GetByTaskId(id);

            var statuses = await sr.ByTaskId(id);

            foreach (var comment in comments)
            {
                var docsComment = docs.Where(item => item.TrainTaskCommentId == comment.Id).ToList();
                var filesDto    = new List <FileTaskDto>();
                foreach (var item in docsComment)
                {
                    var toAdd = new FileTaskDto
                    {
                        DocumentType = (int)item.DocumentType,
                        Id           = item.Id,
                        Name         = item.Name
                    };
                    filesDto.Add(toAdd);
                }

                if (filesDto.Count != 0 || !string.IsNullOrWhiteSpace(comment.Text))
                {
                    list.Add(new HistoryTaskDto
                    {
                        Date            = comment.Date,
                        Files           = filesDto,
                        Type            = TaskHistoryType.Comment.ToString(),
                        User            = comment.User.Name,
                        UserBrigadeType = (int?)comment.User.Brigade?.BrigadeType,
                        Text            = comment.Text
                    });
                }
            }

            TrainTaskExecutor prevExec = null;

            foreach (var exec in executors)
            {
                list.Add(new HistoryTaskDto
                {
                    Date = exec.Date,
                    NewExecutorBrigadeType = (int)exec.BrigadeType,
                    OldExecutorBrigadeType = prevExec == null ? null : (int?)prevExec.BrigadeType,
                    Type            = TaskHistoryType.Executor.ToString(),
                    User            = exec.User.Name,
                    UserBrigadeType = (int?)exec.User.Brigade?.BrigadeType,
                });
                prevExec = exec;
            }

            TrainTaskStatus prevSt = null;

            foreach (var st in statuses)
            {
                list.Add(new HistoryTaskDto
                {
                    Date            = st.Date,
                    NewStatus       = (int)st.Status,
                    OldStatus       = prevSt == null ? null : (int?)prevSt.Status,
                    Type            = TaskHistoryType.Status.ToString(),
                    User            = st.User.Name,
                    UserBrigadeType = (int?)st.User.Brigade?.BrigadeType,
                });
                prevSt = st;
            }

            var ret = list.OrderBy(o => o.Date).ToList();

            return(ret);
        }