Ejemplo n.º 1
0
 public TaskItemBusiness(IUnitOfWork _unitOfWork)
 {
     unitOfWork           = _unitOfWork;
     taskRepository       = new TaskItemRepository(unitOfWork);
     taskStatusRepository = new TaskStatusRepository(unitOfWork);
     contactRepository    = new ContactRepository(unitOfWork);
     leadRepository       = new LeadRepository(unitOfWork);
     accountRepository    = new AccountRespository(unitOfWork);
 }
Ejemplo n.º 2
0
        public async Task <JsonResult> GetAvaibleStatuses(int taskStatus, BrigadeType executorBrigadeType)
        {
            await CheckPermission();

            var permissions = (await GetCurrentUser()).Role.Permissions;
            var sqlR        = new TaskStatusRepository(_logger);
            var result      = sqlR.GetAvailableStatusesNewTask((TaskStatus)taskStatus, executorBrigadeType, permissions);

            return(Json(result));
        }
Ejemplo n.º 3
0
 public HttpResponseMessage Get()
 {
     try
     {
         return(Request.CreateResponse(HttpStatusCode.OK, TaskStatusRepository.ReadAll()));
     }
     catch (Exception exc)
     {
         return(Request.CreateResponse(HttpStatusCode.BadRequest, "Generic error happened."));
     }
 }
Ejemplo n.º 4
0
        public async Task TaskFucker(ActCategoriesRepository sqlRAct, List <TaskRepository.TrainTaskWithStatus> tasks, ActCategoriesRepository.EquipmentActsPdf item)
        {
            var sqlRTs = new TaskStatusRepository(_logger);

            foreach (var task in tasks)
            {
                var iWantSleep = await sqlRAct.GetByEquipmentId(task.EquipmentModel.Equipment.Id);

                if (iWantSleep.Count > 0)
                {
                    var value = iWantSleep.FirstOrDefault();
                    if (value.Name.Equals(item.ActName))
                    {
                        if (item.BadR1 == null)
                        {
                            item.BadR1 = 0;
                        }
                        item.BadR1++;

                        item.CarriageNumR1.Add(task.Carriage.Number);//$" {other.CreateCarriageNameWithOutTrain(task.Carriage.Number)};";

                        //выполненые
                        var taskStatuses = await sqlRTs.ByTaskId(task.Id);

                        var isDone = false;
                        foreach (var status in taskStatuses)
                        {
                            if (status.Status == TaskStatus.Closed)
                            {
                                if (item.GoodR2 == null)
                                {
                                    item.GoodR2 = 0;
                                }
                                item.GoodR2++;
                                item.CarriageNumR2.Add(task.Carriage.Number);
                                isDone = true;
                                break;
                            }
                        }

                        if (!isDone)
                        {
                            if (item.BadR3 == null)
                            {
                                item.BadR3 = 0;
                            }
                            item.BadR3++;
                            item.CarriageNumR3.Add(task.Carriage.Number);
                        }
                    }
                }
            }
        }
Ejemplo n.º 5
0
        public static TaskStatusCollection GetAll()
        {
            ITaskRepository <TaskStatusDTO, TaskStatusCriteria> repository = new TaskStatusRepository();
            var collection = new TaskStatusCollection();

            var colletionDTO = repository.FetchAll(new TaskStatusCriteria());

            foreach (DTO.TaskStatusDTO dto in colletionDTO)
            {
                var taskStatus = TaskStatus.CopyFromDTO(dto);
                taskStatus.MarkOld();
                collection.Add(taskStatus);
            }

            return(collection);
        }
Ejemplo n.º 6
0
 public HttpResponseMessage Post(TaskStatusDto dto)
 {
     try
     {
         if (dto != null)
         {
             TaskStatusRepository.Create(dto);
             return(Request.CreateResponse(HttpStatusCode.OK));
         }
         return(Request.CreateResponse(HttpStatusCode.BadRequest));
     }
     catch (Exception)
     {
         return(Request.CreateResponse(HttpStatusCode.BadRequest, "Generic error happened."));
     }
 }
Ejemplo n.º 7
0
 public HttpResponseMessage Delete(int id)
 {
     try
     {
         TaskStatusRepository.Delete(id);
         return(Request.CreateResponse(HttpStatusCode.OK));
     }
     catch (ElementNotFoundException e)
     {
         return(Request.CreateResponse(HttpStatusCode.BadRequest, e.Message));
     }
     catch (Exception)
     {
         return(Request.CreateResponse(HttpStatusCode.BadRequest, "Generic error happened."));
     }
 }
Ejemplo n.º 8
0
        private async static Task <TrainTask> CheckTrainTaskExist(TaskStatusRepository sqlRStatus, List <TrainTask> allTasks)
        {
            TrainTask trainTaskToAdd = null;

            if (allTasks.Count > 0)
            {
                foreach (var value in allTasks)
                {
                    var statuses = await sqlRStatus.ByTaskId(value.Id);

                    if (statuses.Length > 0 && statuses.Last().Status != TaskStatus.Closed)
                    {
                        trainTaskToAdd = value;
                    }
                }
            }

            return(trainTaskToAdd);
        }
Ejemplo n.º 9
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);
            }
        }
Ejemplo n.º 10
0
        private static async Task <List <Row> > GetTaskData(List <TrainTask> tasks, ILogger logger)
        {
            var sqlRUsers               = new UserRepository(logger);
            var sqlRTaskStatus          = new TaskStatusRepository(logger);
            var sqlRTaskExecutors       = new ExecutorRepository(logger);
            var sqlRTaskComment         = new CommentRepository(logger);
            var sqlRCarriages           = new CarriageRepository(logger);
            var sqlREquipmentModel      = new EquipmentModelsRepository(logger);
            var sqlREquipment           = new EquipmentRepository(logger);
            var sqlRTrains              = new TrainRepository(logger);
            var sqlRTrainTaskAttributes = new TrainTaskAttributesRepository(logger);
            var sqlRFault               = new FaultsRepository(logger);

            var rows = new List <Row>();

            foreach (var task in tasks)
            {
                var currentTaskStatus = (await sqlRTaskStatus.ByTaskId(task.Id)).Last();
                var carriage          = await sqlRCarriages.ById(task.CarriageId);

                var user = GetUserById(sqlRUsers, task.UserId);

                var taskExecutor   = (await sqlRTaskExecutors.GetByTaskId(task.Id)).Last();
                var equipmentModel = await sqlREquipmentModel.ById(task.EquipmentModelId);

                var equipment = await sqlREquipment.ById(equipmentModel.EquipmentId);

                var taskAttributes = await sqlRTrainTaskAttributes.ByTaskId(task.Id);

                var lastComment = (await sqlRTaskComment.GetByTaskId(task.Id)).LastOrDefault();
                var fault       = new Fault();
                if (taskAttributes.Count == 1 && taskAttributes.First().FaultId.HasValue)
                {
                    fault = await sqlRFault.ById(taskAttributes.First().FaultId.Value);
                }


                var updateData = GetTaskLastUpdate(lastComment, taskExecutor, currentTaskStatus);

                var toadd = new Row
                {
                    Id       = new RowId(task.Id, 2),
                    HasItems = false.ToString(),
                    ParentId = null,
                    //Ид
                    Col0 = "И" + task.Id,
                    //Статус
                    Col1 = GetStringTaskStatus(currentTaskStatus.Status),
                    //Тип
                    Col2 = GetStringTaskType(task.TaskType),
                    //Состав
                    Col3 = GetTrainById(sqlRTrains, carriage.TrainId).Name,
                    //Инициатор
                    Col4 = user.Name,
                    //Исполнитель
                    Col5 = GetStringBrigadeType(taskExecutor.BrigadeType),
                    //Дата
                    Col6 = task.CreateDate.ToStringDateTime(),
                    ////Вагон
                    Col7 = carriage.Number.ToString(),
                    //Оборудование
                    Col8 = equipment.Name,
                    ////Типовая Неисправность
                    Col9 = fault?.Name,
                    //Обновлено
                    Col10 = updateData?.Date.ToStringDateTime(),
                    //Обновил
                    Col11 = updateData?.User.Name
                };
                if (taskAttributes.Count > 1)
                {
                    toadd.HasItems = true.ToString();
                }

                rows.Add(toadd);
            }

            return(rows);
        }
Ejemplo n.º 11
0
        private static async Task <FilteredTaskInspection> FilterPaginate(ReportRequest input, ILogger logger, bool isFillTask = true, bool isFillInspection = true)
        {
            var sqlRInspections       = new InspectionRepository(logger);
            var sqlRTask              = new TaskRepository(logger);
            var sqlRTaskStatus        = new TaskStatusRepository(logger);
            var sharedTaskInspections = new List <SharedTaskInspection>();

            if (!int.TryParse(input.Paging.Skip, out var skip))
            {
                throw new ValidationException(Error.ParserErrorInt);
            }

            if (!int.TryParse(input.Paging.Limit, out var limit))
            {
                throw new ValidationException(Error.ParserErrorInt);
            }



            List <Inspection> inspections;

            if (isFillInspection)
            {
                inspections = await sqlRInspections.GetAllSortByProperty("DateStart", "DESC");

                foreach (var inspection in inspections)
                {
                    sharedTaskInspections.Add(new SharedTaskInspection {
                        Inspection = inspection
                    });
                }
            }

            List <TrainTask> tasks;

            if (isFillTask)
            {
                tasks = await sqlRTask.GetAllSortByProperty("CreateDate", "DESC");

                foreach (var item in tasks)
                {
                    sharedTaskInspections.Add(new SharedTaskInspection {
                        TrainTask = item
                    });
                }
            }

            var sharedTaskInspectionFiltered = new List <SharedTaskInspection>();

            if (input.Filters.Any())
            {
                foreach (var filter in input.Filters)
                {
                    foreach (var sharedTaskInspection in sharedTaskInspections)
                    {
                        switch (filter.ColumnName)
                        {
                        //Статус
                        case "col1":
                            string filterField = null;
                            if (sharedTaskInspection.Inspection != null)
                            {
                                filterField = GetStringInspectionStatus(sharedTaskInspection.Inspection.Status);
                            }
                            if (sharedTaskInspection.TrainTask != null)
                            {
                                var currentTaskStatus = (await sqlRTaskStatus.ByTaskId(sharedTaskInspection.TrainTask.Id)).Last();
                                filterField = GetStringTaskStatus(currentTaskStatus.Status);
                            }

                            if (StringFilter(filterField, filter))
                            {
                                sharedTaskInspectionFiltered.Add(sharedTaskInspection);
                            }
                            break;

                        default:
                            throw new NotImplementedException(Error.InDevelopment);
                        }
                    }
                }

                sharedTaskInspections = sharedTaskInspectionFiltered;
            }

            if (skip > sharedTaskInspections.Count)
            {
                sharedTaskInspections = new List <SharedTaskInspection>();
            }
            if (skip == sharedTaskInspections.Count)
            {
                limit = 1;
            }
            if (skip + limit > sharedTaskInspections.Count)
            {
                limit = sharedTaskInspections.Count - skip;
            }
            var total = sharedTaskInspections.Count;

            sharedTaskInspections = sharedTaskInspections.GetRange(skip, limit);

            inspections = sharedTaskInspections.Where(x => x.Inspection != null).Select(q => q.Inspection).ToList();
            tasks       = sharedTaskInspections.Where(x => x.TrainTask != null).Select(q => q.TrainTask).ToList();


            return(new FilteredTaskInspection {
                Inspections = inspections, TrainTask = tasks, Total = total
            });
        }
Ejemplo n.º 12
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);
        }
Ejemplo n.º 13
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);
            }
        }
Ejemplo n.º 14
0
        public async Task <TaskByIdDto> GetTaskById(int id, int permissions = -1)
        {
            using (var conn = new SqlConnection(AppSettings.ConnectionString))
            {
                var sqlRExecutor   = new ExecutorRepository(_logger);
                var sqlRTaskStatus = new TaskStatusRepository(_logger);
                var sqlRTask       = new TaskSqls();


                var fromSql = (await conn.QueryAsync <TaskDetailFromSql>(sqlRTask.GetTrainTaskByIdAndAttributeId(id))).ToList();

                var task = fromSql.First();

                var result = new TaskByIdDto
                {
                    Id             = task.Id,
                    Data           = task.CreateDate,
                    InitiatorName  = task.InitiatorName,
                    TrainName      = task.TrainName,
                    EquipmentName  = task.EquipmentName,
                    CarriageSerial = task.CarriageSerial, //CreateCarriageName(task.TrainName, task.CarriageNumber),
                    TaskType       = task.TaskType
                };

                //Текущий статус
                var taskStatuses = await sqlRTaskStatus.ByTaskId(id);

                var currentTaskStatus = taskStatuses.Last().Status;
                result.StatusId = (int)currentTaskStatus;

                //Текущий исполнитель
                var taskExecutors = await sqlRExecutor.GetByTaskId(id);

                BrigadeType currentTaskExecutor = 0;
                if (taskExecutors.Count > 0)
                {
                    currentTaskExecutor = taskExecutors.Last().BrigadeType;
                    result.BrigadeType  = (int)currentTaskExecutor;
                }

                //Уровень задачи
                var taskLevel = fromSql.OrderBy(x => x.TaskLevel).Select(x => x.TaskLevel).First();
                result.TaskLevel = taskLevel.HasValue ? (int)taskLevel : 0;

                //Доступные статусы
                var possibleTaskStatuses = sqlRTaskStatus.GetAvailableStatusesNewTask(currentTaskStatus, currentTaskExecutor, permissions);
                result.PossibleTaskStatuses = possibleTaskStatuses.Select(x => (int)x).ToList();

                //Неисправности из атрибутов
                result.Faults      = new List <FaultTaskDto>();
                result.Inspections = new List <InspectionTaskDto>();
                foreach (var item in fromSql)
                {
                    if (item.AttributeFaultId != null)
                    {
                        await AddFaultData(result, item);
                    }

                    if (item.AttributeInspectionId != 0)
                    {
                        await AddInspectionData(result, item);
                    }
                }
                //Добавить в фаулты данные по чеклистам из инпекции
                var withCheckListEquipmentId = fromSql.Where(x => x.AttributeCheckListEquipmentId != null)
                                               .DistinctBy(y => y.AttributeCheckListEquipmentId).ToList();
                foreach (var item in withCheckListEquipmentId)
                {
                    await AddFaultDataFromCheckListEquipmentId(result, item);
                }

                result.History = await AddHistoryData(id);

                return(result);
            }
        }
Ejemplo n.º 15
0
 public TaskStatusController()
 {
     taskStatusRepo = new TaskStatusRepository();
 }
Ejemplo n.º 16
0
        /// <summary>
        ///  Инциденты – вкладка с перечнем открытых инцидентов на составе, с возможностью перехода в форму инцидента при клике по нему. Информация будет выводится в табличном виде, со следующим набором полей:
        /// </summary>
        private static async Task <ReportResponse> GetNotClosedTrainTaskTable(ReportRequest input, int planedRouteTrainId, ILogger logger)
        {
            var sqlRTrains            = new TrainRepository(logger);
            var sqlRTask              = new TaskRepository(logger);
            var sqlRPlanedRouteTrains = new PlanedRouteTrainsRepository(logger);
            var sqlRRoute             = new RoutesRepository(logger);
            var sqlRInspections       = new InspectionRepository(logger);
            var sqlRTaskAttributes    = new TrainTaskAttributesRepository(logger);
            var sqlREquipmentModel    = new EquipmentModelsRepository(logger);
            var sqlREquipment         = new EquipmentRepository(logger);
            var sqlRCarriage          = new CarriageRepository(logger);
            var sqlRTaskStatus        = new TaskStatusRepository(logger);

            var result = new ReportResponse {
                Rows = new List <Row>()
            };

            result.Columns = new List <Column>
            {
                new Column("col0", "Номер", "number"),
                new Column("col1", "Статус", "string"),
                new Column("col2", "Тип", "string"),
                new Column("col3", "Вагон", "string"),
                new Column("col4", "Оборудование", "string"),
                new Column("col5", "Дата", "date"),
            };

            var planedRouteTrain = await sqlRPlanedRouteTrains.ById(planedRouteTrainId);

            //var route = await sqlRRoute.ById(planedRouteTrain.RouteId);

            var trainTasks = await sqlRTask.ByTrainId(planedRouteTrain.TrainId);

            var notClosedTasks = new List <TrainTask>();

            foreach (var trainTask in trainTasks)
            {
                var status = await sqlRTaskStatus.ByTaskId(trainTask.Id);

                if (status.Length == 0)
                {
                    continue;
                }
                if (status.Last().Status != TaskStatus.Closed)
                {
                    notClosedTasks.Add(trainTask);
                }
            }

            foreach (var notClosedTask in notClosedTasks)
            {
                var taskAtributes = await sqlRTaskAttributes.ByTaskId(notClosedTask.Id);

                var lastStatus = await sqlRTaskStatus.ByTaskId(notClosedTask.Id);

                var carriage = await sqlRCarriage.GetById(notClosedTask.CarriageId);

                var equipmentModel = await sqlREquipmentModel.ById(notClosedTask.EquipmentModelId);

                var equpment = await sqlREquipment.ById(equipmentModel.EquipmentId);


                foreach (var taskAtribute in taskAtributes)
                {
                    var row = new Row
                    {
                        Id       = new RowId(notClosedTask.Id, 1),
                        HasItems = false.ToString(),
                        ParentId = null,
                        //Номер
                        Col0 = $"И{notClosedTask.Id}",
                        //Статус
                        Col1 = GetStringTaskStatus(lastStatus.Last().Status),
                        //Тип
                        Col2 = GetStringTaskType(notClosedTask.TaskType),
                        //Вагон
                        Col3 = $"{carriage.Number} - {carriage.Serial}",
                        //Оборудование
                        Col4 = equpment.Name,
                        //Дата
                        Col5 = notClosedTask.CreateDate.ToStringDateTime(),
                    };

                    result.Rows.Add(row);
                }
            }
            return(result);
        }
Ejemplo n.º 17
0
        //30 - Приёмка поезда ПР
        //31 - Выпуск поезда ПР
        //32 - Приёмка поезда ЛБ
        //33 - Сдача поезда ЛБ

        public async Task <JournalPaging> GetJournalInspectionAndTasks(int skip, int limit, string filter)
        {
            var sqlr = new InspectionRepository(_logger);

            var inspdatarep  = new InspectionDataRepository(_logger);
            var sqlTrainR    = new TrainRepository(_logger);
            var sqlUserR     = new UserRepository(_logger);
            var iR           = new InspectionRepository(_logger);
            var mR           = new MeterageRepository(_logger);
            var sqlStatusR   = new TaskStatusRepository(_logger);
            var sqlExecutorR = new ExecutorRepository(_logger);
            var sqlRTask     = new TaskRepository(_logger);
            var sqlRBrigade  = new BrigadeRepository(_logger);
            var sqlRJournal  = new JournalRepository(_logger);

            var listFull = new List <JournalDateItem>();

            var fromSqlsInspections = await sqlr.GetAll();

            foreach (var fromSqlsInspection in fromSqlsInspections)
            {
                var train = (await sqlTrainR.ByIdWithStations(fromSqlsInspection.TrainId));
                var user  = await sqlUserR.ById(fromSqlsInspection.UserId);

                var journalInspection = new JournalInspection
                {
                    Id           = fromSqlsInspection.Id,
                    Type         = "inspection",
                    InspectionId = fromSqlsInspection.Id,
                    StatusId     = (int)fromSqlsInspection.Status,
                    TypeId       = (int)fromSqlsInspection.CheckListType,
                    Date         = fromSqlsInspection.DateStart,
                    TrainName    = train.Name,
                    TrainId      = train.Id,
                    Tabs         = new JournalInspectionTabs(),
                    UserName     = user.Name,
                };

                if (user.BrigadeId != null)
                {
                    journalInspection.OwnerBrigadeType = (await sqlRBrigade.ById((int)user.BrigadeId)).BrigadeType;
                }


                //дескрипшен
                var counters = await iR.GetCounters(fromSqlsInspection.Id);

                journalInspection.Tabs.Description = new JournalInspectionDescription
                {
                    TasksCount = counters.Tasks,
                    DataEnd    = fromSqlsInspection.DateEnd,
                    //Выдает количество уникальных меток
                    AllLabelCount = counters.Labels,
                    TempCount     = counters.Measurements
                };


                //лейблы
                await getInspectionLabels(mR, fromSqlsInspection, journalInspection);

                //измерения
                await getInspectionMeterage(mR, fromSqlsInspection, journalInspection);

                //счетчики
                await GetInspectionCouters(inspdatarep, fromSqlsInspection, journalInspection);

                //говнохак под ебанутые фильтры и вывод. TypeId == 2 - Приемка, 3 - сдача
                changeInspetionTypeForUi(journalInspection);


                //Фильтруем
                var isFiltered = await InspectionFilter(filter, sqlRTask, fromSqlsInspection, journalInspection);

                if (!isFiltered)
                {
                    listFull.Add(new JournalDateItem
                    {
                        Date       = journalInspection.Date,
                        Inspection = journalInspection
                    }
                                 );
                }
            }


            //Таски

            var fromSqlsT = await sqlRJournal.GetAllTaskForJournal();

            foreach (var fromSql in fromSqlsT)
            {
                var journalTask = new JournalTask
                {
                    Type                  = "Task",
                    TaskId                = fromSql.TaskId,
                    TaskType              = fromSql.TaskType,
                    TrainName             = fromSql.TrainName,
                    TrainId               = fromSql.TrainId,
                    UserName              = fromSql.UserName,
                    Date                  = fromSql.CreateDate,
                    CarriageName          = CreateCarriageName(fromSql.TrainName, fromSql.CarriageNumber),
                    CarriageNum           = fromSql.CarriageNumber,
                    CarriageId            = fromSql.CarriageId,
                    EquipmentName         = fromSql.EquipmentName,
                    FaultName             = fromSql.FaultName,
                    InspectionInfo        = _GetInspectionInfo(fromSql.InspectionId, fromSql.InspectionType),
                    CarriagesSerialNumber = fromSql.CarriagesSerialNumber,
                    TaskAttributeId       = fromSql.TaskAttributeId
                };

                var executor = (await sqlExecutorR.GetByTaskId(fromSql.TaskId)).LastOrDefault();
                if (executor != null)
                {
                    journalTask.ExecutorBrigadeType = (int)executor.BrigadeType;
                }


                var taskStatus = sqlStatusR.GetByTrainTaskId(fromSql.TaskId);
                if (taskStatus != null)
                {
                    journalTask.StatusId = (int)sqlStatusR.GetByTrainTaskId(fromSql.TaskId).Status;
                }
                //journalTask.StatusId = fromSql.TaskId;

                var isFiltered = TaskFilter(filter, fromSql, journalTask);
                if (!isFiltered)
                {
                    //response.Add(journalTask.ToJson());
                    listFull.Add(new JournalDateItem
                    {
                        Date = journalTask.Date,
                        Task = journalTask
                    }
                                 );
                }
            }



            //sort by date
            listFull.Sort((x, y) => y.Date.CompareTo(x.Date));

            //пагинация
            List <JournalDateItem> listSkiplimit = paging(skip, ref limit, listFull);

            //Делаем жсон стрингу для вывода
            var pagingList = new List <string>();

            converToJsonString(listSkiplimit, pagingList);

            var result = new JournalPaging
            {
                Data  = pagingList.ToArray(),
                Total = listFull.Count
            };

            return(result);
        }