コード例 #1
0
        public async Task <JsonResult> DeleteStaff([FromBody] UserInternal ub)
        {
            await CheckPermission();

            var ur   = new UserRepository(_logger);
            var pb   = new PlaneBrigadeTrainsRepository(_logger);
            var pk   = new PlanedRouteTrainsRepository(_logger);
            var user = await ur.GetStaffById(ub.UserId);

            if (user == null)
            {
                throw new Exception("user.Id not found");
            }

            var planeBrigades = await pb.ByUserId(user.Id);

            if (planeBrigades.Count > 0)
            {
                throw new Exception("Сотрудник уже назначен на планирование поездов");
            }

            var planedRoutes = await pk.ByUserId(user.Id);

            if (planedRoutes.Count > 0)
            {
                throw new Exception("Сотрудник уже назначен на планирование маршрутов");
            }

            await ur.DeleteStaff(user);

            ur.Dispose();

            return(Json(new { message = "Delete OK" }));
        }
コード例 #2
0
        /// <summary>
        ///  Депо – вкладка с информацией о плановом назначении поезда на места постановки
        /// </summary>
        private static async Task <ReportResponse> GetDepoEventsTable(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 sqlR          = new PrimitiveRepository(logger, "Parkings");
            var sqlRDepoEvent = new DepoEventsRepository(logger);



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

            result.Columns = new List <Column>
            {
                new Column("col0", "Место постановки", "string"),
                new Column("col1", "Время захода на место постановки", "date"),
                new Column("col2", "Время выхода с места постановки", "date"),
            };

            var planedRouteTrain = await sqlRPlanedRouteTrains.ById(planedRouteTrainId);

            var events = await sqlRDepoEvent.ByTrainId(planedRouteTrain.TrainId);

            foreach (var item in events)
            {
                var parking = await sqlR.ById <Parking>(item.ParkingId);

                string testStopTime = null;
                if (item.TestStopTime != null)
                {
                    testStopTime = ((DateTime)item.TestStopTime).ToStringDateTime();
                }

                var row = new Row
                {
                    Id       = new RowId(item.Id, 1),
                    HasItems = false.ToString(),
                    ParentId = null,
                    //Место постановки
                    Col0 = parking.Name,
                    //Время захода на место постановки
                    Col1 = item.InTime.ToStringDateTime(),
                    //Время выхода с места постановки
                    Col2 = testStopTime
                };

                result.Rows.Add(row);
            }

            return(result);
        }
コード例 #3
0
        /// <summary>
        /// Данные по станкам
        /// </summary>
        private static async Task GetPlaneStationsData(RouteData result, List <PlaneStantionOnTrip> planeStations,
                                                       int tripId, ILogger logger)
        {
            var sqlRStations          = new StantionsRepository(logger);
            var sqlRTrips             = new TripsRepository(logger);
            var sqlRTrains            = new TrainRepository(logger);
            var sqlRChangedStantion   = new ChangePlaneStantionOnTripsRepository(logger);
            var sqlRPlanedRouteTrains = new PlanedRouteTrainsRepository(logger);

            var planedTripWithStation = new PlanedTripWithStations
            {
                TripName      = (await sqlRTrips.ById(tripId)).Name,
                PlaneStations = new List <PlanedStation>()
            };

            var currentTripPlaneStations = planeStations.Where(x => x.TripId == tripId);

            foreach (var currentTripPlaneStation in currentTripPlaneStations)
            {
                var changedStationData = await sqlRChangedStantion.ByPlaneStantionOnTripId(currentTripPlaneStation.Id);

                var toAdd = new PlanedStation
                {
                    PlanedStationId  = currentTripPlaneStation.Id,
                    StationName      = (await sqlRStations.ById(currentTripPlaneStation.StantionId)).Name,
                    InTime           = currentTripPlaneStation.InTime,
                    OutTime          = currentTripPlaneStation.OutTime,
                    ChangeStationsId = changedStationData?.Id,
                    ChangedInTime    = changedStationData?.InTime,
                    ChangedOutTime   = changedStationData?.OutTime,
                    ChangeDroped     = changedStationData?.Droped,
                    ChangeTrainId    = changedStationData?.TrainId
                };

                //TODO надо уточнить стоит ли так делать. Возвращать нулл если поезд нихуя непоменялся
                var planedRouteTrain = await sqlRPlanedRouteTrains.ById(currentTripPlaneStation.PlanedRouteTrainId);

                if (planedRouteTrain.TrainId == toAdd.ChangeTrainId)
                {
                    toAdd.ChangeTrainId = null;
                }

                if (toAdd.ChangeTrainId != null)
                {
                    toAdd.ChangeTranName = (await sqlRTrains.ById(toAdd.ChangeTrainId)).Name;
                }

                planedTripWithStation.PlaneStations.Add(toAdd);
            }

            result.PlaneRoute.TripsWithStations.Add(planedTripWithStation);
        }
コード例 #4
0
        /// <summary>
        /// То2 таблица
        /// </summary>
        private static async Task <ChangedTo2OrCtoDto> GetTo2OrCto(GetRouteInformationTableRequest input, ILogger logger)
        {
            var sqlRPlaneInspections   = new PlanedInspectionRoutesRepository(logger);
            var sqlRChangedInspections = new ChangedPlanedInspectionRoutesRepository(logger);

            var planedInspection = await sqlRPlaneInspections.ById(input.EntityId);

            var changedInspection = await sqlRChangedInspections.ByPlanedInspectionRouteId(planedInspection.Id);

            var sqlRTrains            = new TrainRepository(logger);
            var sqlRPlanedRouteTrains = new PlanedRouteTrainsRepository(logger);
            var sqlRRoute             = new RoutesRepository(logger);

            var planedRouteTrain = await sqlRPlanedRouteTrains.ById(input.PlanedRouteTrainId);

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

            var train = await sqlRTrains.ById(planedRouteTrain.TrainId);


            var result = new ChangedTo2OrCtoDto
            {
                Id        = planedInspection.Id,
                RouteName = route.Name,
                TrainName = train.Name,
                Plan      = new ChangedTo2OrCtoDto.Planned
                {
                    DateStart = planedInspection.Start.ToFuckingGenaFormat(planedRouteTrain.Date),
                    DateEnd   = planedInspection.End.ToFuckingGenaFormat(planedRouteTrain.Date)
                },
                Fact = new ChangedTo2OrCtoDto.Actual
                {
                    DateStart = planedInspection.Start.ToFuckingGenaFormat(planedRouteTrain.Date),
                    DateEnd   = planedInspection.End.ToFuckingGenaFormat(planedRouteTrain.Date),
                    Canseled  = false
                }
            };

            if (changedInspection != null)
            {
                result.Fact.DateStart = changedInspection.Start.ToFuckingGenaFormat(planedRouteTrain.Date);
                result.Fact.DateEnd   = changedInspection.End.ToFuckingGenaFormat(planedRouteTrain.Date);
                if (changedInspection.Droped)
                {
                    result.Fact.Canseled = changedInspection.Droped;
                }
            }

            return(result);
        }
コード例 #5
0
        //В эксельку кто когда сваливает с депо
        public async Task <ReportResponse> EscapeFromDepoReport(ExcelDataRequest input)
        {
            var sqlRPlaneTrain   = new PlanedRouteTrainsRepository(_logger);
            var sqlRRoute        = new RoutesRepository(_logger);
            var sqlRTrain        = new TrainRepository(_logger);
            var sqlRTrip         = new TripsRepository(_logger);
            var sqlRUser         = new UserRepository(_logger);
            var sqlRPlaneStation = new PlanedStationOnTripsRepository(_logger);
            var sqlRPlaneBrigade = new PlaneBrigadeTrainsRepository(_logger);

            if (input.Date == null)
            {
                throw new ValidationException("Не задан StartDate");
            }

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

            result.Columns = new List <Column>
            {
                new Column("col0", "Маршрут", "string"),
                //№ поезда(Походу рейс https://alcodevelop.atlassian.net/browse/CPPK-4)
                new Column("col1", "№ поезда", "string"),
                new Column("col2", "Машинист", "string"),
                new Column("col3", "Состав", "string"),
                new Column("col4", "КП", "string"),
            };

            //Бля ну получим все поезда наверно
            var planeTrains = await sqlRPlaneTrain.GetAll();

            //За указанные сутки
            planeTrains = planeTrains.Where(x => x.Date.Date == input.Date.Date).ToList();
            foreach (var planeTrain in planeTrains)
            {
                var route = await sqlRRoute.ById(planeTrain.RouteId);

                var train = await sqlRTrain.ById(planeTrain.TrainId);

                //Берем все станки маршрута
                var planeStations = await sqlRPlaneStation.ByPlannedRouteTrainId(planeTrain.Id);

                var startStation = planeStations.OrderBy(x => x.OutTime).FirstOrDefault();

                var trip = new Trip();
                if (startStation != null)
                {
                    trip = await sqlRTrip.ById(startStation.TripId);
                }
                var planeBrigades = await sqlRPlaneBrigade.ByPlanedRouteTrainId(planeTrain.Id);

                //TODO брать 1-го юзера и делать машинистом, както неправильно) хДД
                User motorman = null;
                if (planeBrigades.Count != 0)
                {
                    motorman = await sqlRUser.ById(planeBrigades.First().UserId);
                }

                var toadd = new Row
                {
                    Id       = new RowId(DateTime.Now.Ticks.GetHashCode(), 2),
                    HasItems = false.ToString(),
                    ParentId = null,
                    //Маршрут
                    Col0 = route.Name,
                    //№ поезда(Походу рейс https://alcodevelop.atlassian.net/browse/CPPK-4)
                    Col1 = trip.Name,
                    //Машинист
                    Col2 = motorman?.Name,
                    //Состав
                    Col3 = train.Name,
                    //КП
                    Col4 = startStation?.OutTime.ToStringTimeOnly()
                };

                result.Rows.Add(toadd);
            }


            return(result);
        }
コード例 #6
0
        /// <summary>
        /// Бригады таблица
        /// </summary>
        private static async Task <ChangeTimeRangeBrigadeDto> GetBrigadeData(GetRouteInformationTableRequest input, ILogger logger)
        {
            var sqlRPlanedRouteTrains    = new PlanedRouteTrainsRepository(logger);
            var sqlRTrips                = new TripsRepository(logger);
            var sqlRPlanedStations       = new PlanedStationOnTripsRepository(logger);
            var sqlRUsers                = new UserRepository(logger);
            var sqlRStations             = new StantionsRepository(logger);
            var sqlRPlaneBrigadeTrains   = new PlaneBrigadeTrainsRepository(logger);
            var sqlRChangedBrigadeTrains = new ChangePlaneBrigadeTrainsRepository(logger);

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

            //Берем всех юзерков
            var users = await sqlRUsers.GetAll();


            //Получим все станки с маршрута
            var planeStations = await sqlRPlanedStations.ByPlannedRouteTrainId(input.PlanedRouteTrainId);

            planeStations.OrderBy(x => x.InTime);

            var currentTripId = 0;

            for (var index = 0; index < planeStations.Count; index++)
            {
                var planeStation = planeStations[index];
                var trip         = await sqlRTrips.ById(planeStation.TripId);

                var station = await sqlRStations.ById(planeStation.StantionId);

                var qqStart = planeStation.InTime.ToStringTimeOnly();
                var qqEnd   = planeStation.OutTime.ToStringTimeOnly();

                if (currentTripId == 0 || planeStation.TripId != currentTripId)
                {
                    qqStart = "н/д";
                }
                if (index != planeStations.Count - 1)
                {
                    if (planeStations[index + 1].TripId != planeStation.TripId && currentTripId != 0)
                    {
                        qqEnd = "н/д";
                    }
                }
                else
                {
                    qqEnd = "н/д";
                }
                var qq1 = $"{station.Name} {qqStart}-{qqEnd} ({trip.Name})";
                stationsSimple.Add(new StantionSimple
                {
                    StantionId = planeStation.Id, StantionName = qq1, TripName = trip.Name, InTime = planeStation.InTime
                });
                currentTripId = planeStation.TripId;
            }

            var planeBrigades = await sqlRPlaneBrigadeTrains.ByPlanedRouteTrainId(input.PlanedRouteTrainId);

            planeBrigades = planeBrigades.Where(x => x.StantionStartId == input.EntityId).ToList();


            var result = new ChangeTimeRangeBrigadeDto
            {
                Users      = new List <ChangeTimeRangeUserDto>(),
                DataSource = new DataSource
                {
                    Stantions = stationsSimple
                                .OrderBy(x => x.TripName).ThenBy(y => y.InTime)
                                .Select(x => new DataSourceDto {
                        Value = x.StantionId, Text = x.StantionName
                    })
                                .ToList(),

                    Users = users
                            .OrderBy(x => x.Name)
                            .Select(x => new DataSourceDto {
                        Value = x.Id, Text = x.Name
                    })
                            .ToList()
                }
            };

            foreach (var planeBrigade in planeBrigades)
            {
                var changeBrigade = await sqlRChangedBrigadeTrains.ByPlaneBrigadeTrainId(planeBrigade.Id) ?? new ChangePlaneBrigadeTrain
                {
                    StantionEndId = 0, StantionStartId = 0, Droped = false, UserId = 0
                };

                var planeStartStation = await sqlRPlanedStations.ById(planeBrigade.StantionStartId);

                var planeEndStation = await sqlRPlanedStations.ById(planeBrigade.StantionEndId);

                var realStartStation = await sqlRStations.ById(planeStartStation.StantionId);

                var realEndStation = await sqlRStations.ById(planeEndStation.StantionId);

                var planedUser = await sqlRUsers.ById(planeBrigade.UserId);

                var toAdd = new ChangeTimeRangeUserDto
                {
                    StartId             = planeStartStation.Id,
                    EndId               = planeEndStation.Id,
                    UserId              = planedUser.Id,
                    User                = planedUser.Name,
                    Start               = realStartStation.Name,
                    End                 = realEndStation.Name,
                    PlaneBrigadeTrainId = planeBrigade.Id,
                    Canseled            = changeBrigade.Droped
                };

                if (changeBrigade.UserId != 0)
                {
                    toAdd.UserId = changeBrigade.UserId;
                }
                if (changeBrigade.StantionEndId != 0)
                {
                    toAdd.EndId = changeBrigade.StantionEndId;
                }
                if (changeBrigade.StantionStartId != 0)
                {
                    toAdd.StartId = changeBrigade.StantionStartId;
                }


                result.Users.Add(toAdd);
            }
            return(result);
        }
コード例 #7
0
        /// <summary>
        ///  Рейсы со станками таблица
        /// </summary>
        private static async Task <RouteInformationTableTrip> GetTripData(GetRouteInformationTableRequest input, ILogger logger)
        {
            var sqlRStations           = new StantionsRepository(logger);
            var sqlRTrips              = new TripsRepository(logger);
            var sqlRTrains             = new TrainRepository(logger);
            var sqlRChangedStation     = new ChangePlaneStantionOnTripsRepository(logger);
            var sqlRPlannedRouteTrains = new PlanedRouteTrainsRepository(logger);
            var sqlRPlannedStations    = new PlanedStationOnTripsRepository(logger);

            var result = new RouteInformationTableTrip
            {
                Stantions  = new List <RouteInformationTableStantion>(),
                DataSource = new DataSource()
            };

            var plannedRouteTrain = await sqlRPlannedRouteTrains.ById(input.PlanedRouteTrainId);

            var plannedStations = await sqlRPlannedStations.ByPlannedRouteTrainId(input.PlanedRouteTrainId);

            var tripId = plannedStations.Where(x => x.TripId == input.EntityId).Select(x => x.TripId).ToList();

            if (!tripId.Any())
            {
                return(result);
            }

            var trip = await sqlRTrips.ById(tripId.First());

            result.Trip = trip.Name;
            var currentTripPlaneStations = plannedStations.Where(x => x.TripId == trip.Id);

            foreach (var currentTripPlaneStation in currentTripPlaneStations)
            {
                var planTrain = await sqlRTrains.ById(plannedRouteTrain.TrainId);

                var changedStationData =
                    await sqlRChangedStation.ByPlaneStantionOnTripId(currentTripPlaneStation.Id);

                //String changedTrainName;
                //if (changedStationData?.TrainId != null)
                //    changedTrainName = (await sqlRTrains.ById(changedStationData.TrainId)).Name;

                var toAdd = new RouteInformationTableStantion
                {
                    Id                   = currentTripPlaneStation.Id,
                    Name                 = (await sqlRStations.ById(currentTripPlaneStation.StantionId)).Name,
                    Train                = planTrain.Name,
                    StartPlan            = currentTripPlaneStation.InTime.ToStringTimeOnly(),
                    EndPlan              = currentTripPlaneStation.OutTime.ToStringTimeOnly(),
                    TrainId              = planTrain.Id,
                    StartFact            = currentTripPlaneStation.InTime.ToFuckingGenaFormat(plannedRouteTrain.Date.Date),
                    EndFact              = currentTripPlaneStation.OutTime.ToFuckingGenaFormat(plannedRouteTrain.Date.Date),
                    Canceled             = false,
                    PlaneStationOnTripId = currentTripPlaneStation.Id
                };

                if (changedStationData != null)
                {
                    toAdd.StartFact = changedStationData.InTime.ToFuckingGenaFormat(plannedRouteTrain.Date.Date);
                    toAdd.EndFact   = changedStationData.OutTime.ToFuckingGenaFormat(plannedRouteTrain.Date.Date);
                    toAdd.Canceled  = changedStationData.Droped;
                    if (changedStationData.TrainId != null)
                    {
                        toAdd.TrainId = (int)changedStationData.TrainId;
                    }
                }
                result.Stantions.Add(toAdd);
            }

            var availableTrains = await GetAvaibleTrains(plannedRouteTrain.TrainId, logger);

            result.DataSource.Trains =
                availableTrains.Select(x => new DataSourceDto {
                Value = x.TrainId, Text = x.TrainName
            }).ToList();

            return(result);
        }
コード例 #8
0
        /// <summary>
        ///  То1 таблица
        /// </summary>
        private static async Task <ReportResponse> GetTo1Table(int planedRouteTrainId, ILogger logger)
        {
            var sqlRTrains            = new TrainRepository(logger);
            var sqlRPlanedRouteTrains = new PlanedRouteTrainsRepository(logger);
            var sqlRRoute             = new RoutesRepository(logger);
            var sqlRInspections       = new InspectionRepository(logger);
            var sqlRTaskAttributes    = new TrainTaskAttributesRepository(logger);
            var sqlRUser = new UserRepository(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", "Время начала", "date"),
                new Column("col4", "Время окончания", "date"),
                new Column("col5", "Количество созданных инцидентов", "number"),
                new Column("col6", "Исполнитель", "string"),
                new Column("col7", "Меток считано всего (в том числе при обходе и закрытии задач)", "number"),
            };

            var planedRouteTrain = await sqlRPlanedRouteTrains.ById(planedRouteTrainId);

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

            //Надо получить ТО 1 на этот день или блядь для этого поезда. хуй его знает
            var currentTrainInspections = await sqlRInspections.GetByTrainId(planedRouteTrain.TrainId);

            //Выбираем за текущий денек
            var currentDayInspections =
                currentTrainInspections.Where(x => x.DateStart.Date.Equals(planedRouteTrain.CreateDate) && x.CheckListType == CheckListType.TO1);

            foreach (var currentDayInspection in currentDayInspections)
            {
                var row = new Row
                {
                    Id       = new RowId(currentDayInspection.Id, 1),
                    HasItems = false.ToString(),
                    ParentId = null,
                    //Номер
                    Col0 = currentDayInspection.Id.ToString(),
                    //Состав
                    Col1 = (await sqlRTrains.ById(planedRouteTrain.TrainId)).Name,
                    //Рейс
                    Col2 = route.Name,
                    //Время начала
                    Col3 = currentDayInspection.DateStart.ToStringDateTime(),
                    //Время окончания
                    Col4 = currentDayInspection.DateEnd?.ToStringDateTime(),
                    //Количество созданных инцидентов
                    Col5 = (await sqlRTaskAttributes.ByInspectionId(currentDayInspection.Id))?.Count.ToString(),
                    //Исполнитель
                    Col6 = (await sqlRUser.ById(currentDayInspection.UserId))?.Name,
                    //Меток считано всего (в том числе при обходе и закрытии задач)
                    Col7 = "In Development",
                };

                result.Rows.Add(row);
            }

            return(result);
        }
コード例 #9
0
        /// <summary>
        ///  Приемка/Сдача ЛБ таблица
        /// </summary>
        private static async Task <ReportResponse> GetLocomotvInspectionsTable(ReportRequest input, int planedRouteTrainId, ILogger logger)
        {
            var sqlRTrains            = new TrainRepository(logger);
            var sqlRPlanedRouteTrains = new PlanedRouteTrainsRepository(logger);
            var sqlRRoute             = new RoutesRepository(logger);
            var sqlRInspections       = new InspectionRepository(logger);
            var sqlRTaskAttributes    = new TrainTaskAttributesRepository(logger);
            var sqlRUser    = new UserRepository(logger);
            var sqlRBrigade = new BrigadeRepository(logger);

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

            result.Columns = new List <Column>
            {
                new Column("col0", "Состав", "string"),
                new Column("col1", "Тип", "string"),
                new Column("col2", "Время начала", "date"),
                new Column("col3", "Время окончания", "date"),
                new Column("col4", "Меток считано", "number"),
                new Column("col5", "Новых инцидентов заведено (из них критических)", "number"),
                new Column("col6", "Инцидентов на составе всего", "string"),
                new Column("col7", "Километров всего", "number"),
                new Column("col8", "Километров за смену", "number"),
                new Column("col9", "КВт*ч (по каждому вагону)", "string"),
            };

            var planedRouteTrain = await sqlRPlanedRouteTrains.ById(planedRouteTrainId);

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

            var currentTrainInspections = await sqlRInspections.GetByTrainId(planedRouteTrain.TrainId);

            var currentDayInspections =
                currentTrainInspections.Where(x => x.DateStart.Date.Equals(planedRouteTrain.CreateDate));



            foreach (var currentDayInspection in currentDayInspections)
            {
                var user = await sqlRUser.ById(currentDayInspection.UserId);

                if (user.BrigadeId == null)
                {
                    continue;
                }

                var brigade = await sqlRBrigade.ById((int)user.BrigadeId);

                if (brigade.BrigadeType != BrigadeType.Locomotiv)
                {
                    continue;
                }

                var row = new Row
                {
                    Id       = new RowId(currentDayInspection.Id, 1),
                    HasItems = false.ToString(),
                    ParentId = null,
                    //Состав
                    Col0 = (await sqlRTrains.ById(planedRouteTrain.TrainId)).Name,
                    //Тип
                    Col1 = GetStringInspectionType(currentDayInspection.CheckListType),
                    //Время начала
                    Col2 = currentDayInspection.DateStart.ToStringDateTime(),
                    //Время окончания
                    Col3 = currentDayInspection.DateEnd?.ToStringDateTime(),
                    //Меток считано
                    Col4 = "666",
                    //Новых инцидентов заведено (из них критических)
                    Col5 = "666",
                    //Инцидентов на составе всего
                    Col6 = "666",
                    //Километров всего
                    Col7 = "666",
                    //Километров за смену
                    Col8 = "666",
                    //КВт*ч (по каждому вагону)
                    Col9 = "In Development",
                };

                result.Rows.Add(row);
            }

            return(result);
        }
コード例 #10
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);
        }
コード例 #11
0
        public async Task DeleteFromPlanedRouteTrains(int planedRouteTrainsId)
        {
            using (var transaction = new TransactionScope(asyncFlowOption: TransactionScopeAsyncFlowOption.Enabled))
            {
                var sqlRPlanedInspectionOnRoutes = new PlanedInspectionRoutesRepository(_logger);
                var sqlRPlaneStations            = new PlanedStationOnTripsRepository(_logger);
                var sqlRPlaneBrigades            = new PlaneBrigadeTrainsRepository(_logger);
                var sqlRPlanedRouteTrains        = new PlanedRouteTrainsRepository(_logger);

                var sqlRChangedInspections = new ChangedPlanedInspectionRoutesRepository(_logger);
                var sqlRChangedBrigades    = new ChangePlaneBrigadeTrainsRepository(_logger);
                var sqlRChangedStations    = new ChangePlaneStantionOnTripsRepository(_logger);

                //ебаем нахуй инспекции
                var planedInspections = await sqlRPlanedInspectionOnRoutes.ByPlanedRouteTrainId(planedRouteTrainsId);

                foreach (var planedInspection in planedInspections)
                {
                    //Блядь чистим изменненые к хуям.
                    var changed = await sqlRChangedInspections.ByPlanedInspectionRouteId(planedInspection.Id);

                    if (changed != null)
                    {
                        await sqlRChangedInspections.Delete(changed.Id);
                    }
                    await sqlRPlanedInspectionOnRoutes.Delete(planedInspection.Id);
                }

                //Ебаем юзеров к хуям
                var planeBrigades = await sqlRPlaneBrigades.ByPlanedRouteTrainId(planedRouteTrainsId);

                foreach (var planeBrigade in planeBrigades)
                {
                    //Блядь чистим изменненые к хуям.
                    var changed = await sqlRChangedBrigades.ByPlaneBrigadeTrainId(planeBrigade.Id);

                    if (changed != null)
                    {
                        await sqlRChangedBrigades.Delete(changed.Id);
                    }
                    await sqlRPlaneBrigades.Delete(planeBrigade.Id);
                }

                //ебаем станки
                var planeStations = await sqlRPlaneStations.ByPlannedRouteTrainId(planedRouteTrainsId);

                foreach (var planeStation in planeStations)
                {
                    //Блядь чистим изменненые к хуям.
                    var changed = await sqlRChangedStations.ByPlaneStantionOnTripId(planeStation.Id);

                    if (changed != null)
                    {
                        await sqlRChangedStations.Delete(changed.Id);
                    }
                    await sqlRPlaneStations.Delete(planeStation.Id);
                }


                //Ну и главную хуету нахуй
                await sqlRPlanedRouteTrains.Delete(planedRouteTrainsId);

                transaction.Complete();
            }
        }
コード例 #12
0
        public async Task <List <PlanedRouteTrainDto> > PlanedRouteTrainsTable(DateTime startTime, DateTime EndTime)
        {
            var sqlRPlanedRouteTrains    = new PlanedRouteTrainsRepository(_logger);
            var sqlRRoutes               = new RoutesRepository(_logger);
            var sqlRTrains               = new TrainRepository(_logger);
            var sqlRUsers                = new UserRepository(_logger);
            var sqlRDayOfROutes          = new DayOfRoutesRepoisitory(_logger);
            var sqlRStations             = new StantionsRepository(_logger);
            var sqlRPlaneStationsOnTrips = new PlanedStationOnTripsRepository(_logger);
            var sqlRPlaneBrigadeTrains   = new PlaneBrigadeTrainsRepository(_logger);
            var planedRouteTrains        = await sqlRPlanedRouteTrains.GetAll();

            planedRouteTrains = planedRouteTrains.Where(x => x.Date >= startTime && x.Date < EndTime).ToList();
            //var result = new List<PlanedRouteTrainDto>();

            var dictionary = new Dictionary <int, PlanedRouteTrainDto>();
            //var routeDictionary = planedRouteTrains.ToDictionary(e => e.RouteId);

            //Собственно надо набить словарик доступными роутами
            var routes = await sqlRRoutes.GetAll(0, Int32.MaxValue, null);

            routes.Data = routes.Data.Where(x => x.TurnoverId != null).ToList();

            foreach (var route in routes.Data)
            {
                var planedRouteTrainDto = new PlanedRouteTrainDto
                {
                    Route     = route,
                    RouteDays = new List <DayOfWeek>(),
                    DaysData  = new List <DayData>()
                };


                if (route.TurnoverId != null)
                {
                    var daysOfRoutes = await sqlRDayOfROutes.DaysByTurnoverId((int)route.TurnoverId);

                    var days = daysOfRoutes.Select(x => x.Day);
                    planedRouteTrainDto.RouteDays.AddRange(days);
                    var proccesDate = startTime;

                    while (proccesDate <= EndTime)
                    {
                        var currentDay = proccesDate.DayOfWeek;
                        if (days.Contains(currentDay))
                        {
                            planedRouteTrainDto.DaysData.Add(new DayData
                            {
                                Date = proccesDate.Date, DateString = proccesDate.Date.ToString()
                            });
                        }
                        proccesDate = proccesDate.AddDays(1);
                    }
                }

                if (dictionary.ContainsKey(route.Id))
                {
                    dictionary[route.Id].DaysData.AddRange(planedRouteTrainDto.DaysData);
                }
                else
                {
                    dictionary.Add(route.Id, planedRouteTrainDto);
                }
            }

            foreach (var planedRouteTrain in planedRouteTrains)
            {
                //достаем роут
                var route = await sqlRRoutes.ById(planedRouteTrain.RouteId);

                //var currentRouteItems = planedRouteTrains.Where(e => e.RouteId == route.Id);
                var planedRouteTrainDto = new PlanedRouteTrainDto
                {
                    Route    = route,
                    DaysData = new List <DayData>()
                };

                var toAdd = new DayData
                {
                    Train = await sqlRTrains.ById(planedRouteTrain.TrainId),
                    PlanedRouteTrainId = planedRouteTrain.Id,
                    Date = planedRouteTrain.Date
                };
                toAdd.DateString = toAdd.Date.ToString("yyyy-MM-ddTHH:mm:ssZ");
                var planeBrigadeTrains = await sqlRPlaneBrigadeTrains.ByPlanedRouteTrainId(planedRouteTrain.Id);

                toAdd.Users = new List <DaysUser>();
                foreach (var planeBrigadeTrain in planeBrigadeTrains)
                {
                    var user = await sqlRUsers.ById(planeBrigadeTrain.UserId);

                    var userToAdd = new DaysUser
                    {
                        UserId = user.Id, Name = user.Name, PlaneBrigadeTrainsId = planeBrigadeTrain.Id
                    };
                    userToAdd.UserStations = new UserStations();
                    var planedStationInput = await sqlRPlaneStationsOnTrips.ById(planeBrigadeTrain.StantionStartId);

                    userToAdd.UserStations.InputTime = planedStationInput.OutTime;
                    userToAdd.UserStations.InputName = (await sqlRStations.ById(planedStationInput.StantionId)).Name;

                    var planedStationOutput = await sqlRPlaneStationsOnTrips.ById(planeBrigadeTrain.StantionEndId);

                    userToAdd.UserStations.OutputTime = planedStationOutput.InTime;
                    userToAdd.UserStations.OutputName = (await sqlRStations.ById(planedStationOutput.StantionId)).Name;
                    //userToAdd.UserStations.InputName = (await sqlRStations.ById(planeBrigadeTrain.StantionStartId)).Name;
                    //userToAdd.UserStations.OutputName = (await sqlRStations.ById(planeBrigadeTrain.StantionEndId)).Name;
                    toAdd.Users.Add(userToAdd);
                }

                planedRouteTrainDto.DaysData.Add(toAdd);


                if (dictionary.ContainsKey(route.Id))
                {
                    //надо взять текущие деньки роута и проверить что такого еще нет. кстати если его нет надо нахуй послать, а если есть заменить.
                    var currentDays = dictionary[route.Id].DaysData;
                    var day         = currentDays.FirstOrDefault(x =>
                                                                 x.Date.Date.Equals(planedRouteTrainDto.DaysData.First().Date.Date));
                    if (day == null)
                    {
                        dictionary[route.Id].DaysData.AddRange(planedRouteTrainDto.DaysData);
                        continue;
                    }

                    //throw new ValidationException("На этот день нельзя добавить поезд");
                    var index = dictionary[route.Id].DaysData.IndexOf(day);
                    dictionary[route.Id].DaysData[index] = planedRouteTrainDto.DaysData.First();
                    //dictionary[route.Id].DaysData.AddRange(planedRouteTrainDto.DaysData);
                }
                else
                {
                    dictionary.Add(route.Id, planedRouteTrainDto);
                }
            }


            //var train = await sqlRTrains.ByIdWithStations(planedRouteTrain.TrainId);

            var result = new List <PlanedRouteTrainDto>();

            result.AddRange(dictionary.Values);

            return(result);
        }
コード例 #13
0
        public async Task <PlanedRouteTrain> AddTrainToPlanedRouteTrains(PlanedRouteTrain input)
        {
            using (var transaction = new TransactionScope(asyncFlowOption: TransactionScopeAsyncFlowOption.Enabled))
            {
                var sqlRTrips                    = new TripsRepository(_logger);
                var sqlRStations                 = new StantionOnTripsRepository(_logger);
                var sqlRInspectionOnRoutes       = new InspectionRoutesRepository(_logger);
                var sqlRPlanedInspectionOnRoutes = new PlanedInspectionRoutesRepository(_logger);

                var sqlRPlaneStations     = new PlanedStationOnTripsRepository(_logger);
                var sqlRPlanedRouteTrains = new PlanedRouteTrainsRepository(_logger);

                //Валидация Хуяция.
                //TODO поменять на sql
                var trainPlaneRoutes = await sqlRPlanedRouteTrains.ByTrainId(input.TrainId);

                if (trainPlaneRoutes.Any(x => x.Date.Date.Equals(input.Date.Date)))
                {
                    throw new ValidationException(Error.AlreadyAdd);
                }

                var result = await sqlRPlanedRouteTrains.Add(input);

                var trips = await sqlRTrips.GetTripsByRouteId(input.RouteId);

                //var tripsStationsDictionary = new Dictionary<Trip, List<StantionOnTrip>>();
                foreach (var trip in trips)
                {
                    var stations = await sqlRStations.ByTripId(trip.Id);

                    foreach (var station in stations)
                    {
                        var toAdd = _mapper.Map <StantionOnTrip, PlaneStantionOnTrip>(station);
                        toAdd.PlanedRouteTrainId = result.Id;
                        var newInTime = toAdd.InTime - DateTime.MinValue;
                        toAdd.InTime = input.Date.Date.Add(newInTime);

                        var newOutTime = toAdd.OutTime - DateTime.MinValue;
                        toAdd.OutTime = input.Date.Date.Add(newOutTime);

                        await sqlRPlaneStations.Add(toAdd);
                    }

                    //tripsStationsDictionary.Add(trip, stations);
                }

                //И тут я узнал что надо инспекции скопировать ебать их в рот
                var inspections = await sqlRInspectionOnRoutes.GetByRouteId(input.RouteId);

                foreach (var inspection in inspections)
                {
                    var toAdd = new PlanedInspectionRoute
                    {
                        CheckListType      = inspection.CheckListType,
                        PlanedRouteTrainId = result.Id,
                    };
                    var newInTime = inspection.Start - inspection.Start.Date;
                    toAdd.Start = input.Date.Date.Add(newInTime);
                    var newOutTime = inspection.End - inspection.End.Date;
                    toAdd.End = input.Date.Date.Add(newOutTime);
                    await sqlRPlanedInspectionOnRoutes.Add(toAdd);
                }


                transaction.Complete();
                return(result);
            }
        }