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