コード例 #1
0
        private void LoadbtnClicked(object sender, EventArgs e)
        {
            TrainRepository TrainRepo = new TrainRepository();
            List <Train>    tList     = TrainRepo.GetAllTrains();

            this.CancelScheduleGridView.DataSource = tList;
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: alxg90/Booking
        static void Main(string[] args)
        {
            // Можна винести в конструктор?
            ITrainRepository trainRepository = new TrainRepository();

            var train = trainRepository.GetTrain(143);
        }
コード例 #3
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);
        }
コード例 #4
0
        private void SearchbtnClicked(object sender, EventArgs e)
        {
            string          text      = this.Searchtbox.Text;
            TrainRepository TrainRepo = new TrainRepository();
            List <Train>    tList     = TrainRepo.SearchTrain(text);

            this.TrainGridView.DataSource = tList;
        }
コード例 #5
0
ファイル: TrainController.cs プロジェクト: Ramanski/GVCServer
 public TrainController(ILogger <TrainController> logger,
                        TrainRepository trainRepository,
                        WagonOperationsService wagonOperationsService)
 {
     _logger                     = logger;
     _trainRepository            = trainRepository;
     this.wagonOperationsService = wagonOperationsService;
     station                     = "161306";//User?.Claims.Where(cl => cl.Type == ClaimTypes.Locality).FirstOrDefault()?.Value;
 }
コード例 #6
0
        public override void TestInitialize()
        {
            base.TestInitialize();
            var r = new TestRepository();
            var p = new TermRepository();
            var t = new TrainRepository();

            obj = new TestClass(r, p, t);
        }
コード例 #7
0
        public async Task <JsonResult> Delete([FromBody] Train train)
        {
            await CheckPermission();

            var cer = new TrainRepository(_logger);
            await cer.Delete(train.Id);

            return(Json(new { message = "Delete OK" }));
        }
コード例 #8
0
        public TrainSchedule(string i, String n)
        {
            InitializeComponent();
            id   = i;
            name = n;
            TrainRepository TrainRepo = new TrainRepository();
            List <Train>    tList     = TrainRepo.GetAllTrains();

            this.TraindataGridView.DataSource = tList;
        }
コード例 #9
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);
        }
コード例 #10
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);
        }
コード例 #11
0
        private static List <Row> GetInspectionsData(List <Inspection> inspections, ILogger logger)
        {
            var sqlRTrains = new TrainRepository(logger);
            var sqlRUsers  = new UserRepository(logger);
            var sqlRTrainTaskAttributes = new TrainTaskAttributesRepository(logger);

            var rows = new List <Row>();

            foreach (var inspection in inspections)
            {
                var user = GetUserById(sqlRUsers, inspection.UserId);
                var taskAttributesByInspectionCount =
                    GetTrainTaskAttributesCountByInspectionId(sqlRTrainTaskAttributes, inspection.Id).Count;
                var toadd = new Row
                {
                    Id       = new RowId(inspection.Id, 1),
                    HasItems = false.ToString(),
                    ParentId = null,
                    //Ид
                    Col0 = "М" + inspection.Id,
                    //Статус
                    Col1 = GetStringInspectionStatus(inspection.Status),
                    //Тип
                    Col2 = GetStringInspectionType(inspection.CheckListType),
                    //Состав
                    Col3 = GetTrainById(sqlRTrains, inspection.TrainId).Name,
                    //Инициатор
                    Col4 = user.Name,
                    //Исполнитель
                    Col5 = null,
                    //Дата
                    Col6 = inspection.DateStart.ToStringDateTime(),
                    //Вагон
                    Col7 = null,
                    //Оборудование
                    Col8 = $"{taskAttributesByInspectionCount} инц.",
                    //Типовая Неисправность
                    Col9 = null
                };

                if (taskAttributesByInspectionCount != 0)
                {
                    toadd.HasItems = true.ToString();
                }

                rows.Add(toadd);
            }

            return(rows);
        }
コード例 #12
0
        public async Task <JsonResult> Add([FromBody] Train train)
        {
            await CheckPermission();

            if (string.IsNullOrEmpty(train?.Name) || train.StantionId == null || train.StantionId < 1)
            {
                throw new ValidationException(Error.NotFilledOptionalField);
            }
            var sqlr = new TrainRepository(_logger);

            if (train.Id != 0)
            {
                return(Json(await sqlr.Update(train)));
            }
            return(Json(await sqlr.Add(train)));
        }
コード例 #13
0
        private void DeletebtnClicked(object sender, EventArgs e)
        {
            Train t = new Train();

            t.Trainid = this.Tidtbox.Text;
            TrainRepository TrainRepo = new TrainRepository();

            if (TrainRepo.CancelSchedule(t.Trainid))
            {
                MessageBox.Show("Train Information Deleted", "Delete");
            }
            else
            {
                MessageBox.Show("Can Not Delete Data", "Delete Error");
            }
        }
コード例 #14
0
        private void LoadbtnClicked(object sender, EventArgs e)
        {
            TrainRepository TrainRepo = new TrainRepository();
            List <Train>    tList     = TrainRepo.GetAllTrains();

            this.TrainGridView.DataSource = tList;

            PassengerRepository PassRepo = new PassengerRepository();
            List <RPassenger>   pList    = PassRepo.GetAllPassengers();

            this.PassengerGridView2.DataSource = pList;

            SeatRepository SeatRepo = new SeatRepository();
            List <Seat>    sList    = SeatRepo.GetAllSeats();

            this.SeatGridView3.DataSource = sList;
        }
コード例 #15
0
        private static async Task <List <TrainSimple> > GetAvaibleTrains(int trainId, ILogger logger)
        {
            var sqlRTrains = new TrainRepository(logger);
            var allTrains  = await sqlRTrains.GetAll();

            var result = new List <TrainSimple>();

            foreach (var train in allTrains)
            {
                //if (train.Id == trainId)
                //    continue;
                result.Add(new TrainSimple {
                    TrainName = train.Name, TrainId = train.Id
                });
            }

            return(result);
        }
コード例 #16
0
        public async Task <JsonResult> GetAll(int skip, int limit, string filter)
        {
            await CheckPermission();

            var sr     = new TrainRepository(_logger);
            var result = new TrainRepository.TrainPaging();

            if (filter != null)
            {
                result = await sr.GetAll(skip, limit, filter);
            }
            else
            {
                result = await sr.GetAll(skip, limit);
            }
            sr.Dispose();
            return(Json(result));
        }
コード例 #17
0
        public async Task <JsonResult> GetByTrainId(int train_id)
        {
            await CheckPermission();

            var tr = new TrainRepository(_logger);
            var cr = new CarriageRepository(_logger);


            var train = await tr.ByIdWithStations(train_id);

            if (train == null)
            {
                throw new Exception("train not found");
            }

            var result = await cr.GetByTrain(train);

            tr.Dispose();
            return(Json(result));
        }
コード例 #18
0
        public Ticket_Sell(string i, string n)
        {
            InitializeComponent();
            id   = i;
            name = n;

            TrainRepository TrainRepo = new TrainRepository();
            List <Train>    tList     = TrainRepo.GetAllTrains();

            this.TrainGridView.DataSource = tList;

            PassengerRepository PassRepo = new PassengerRepository();
            List <RPassenger>   pList    = PassRepo.GetAllPassengers();

            this.PassengerGridView2.DataSource = pList;

            SeatRepository SeatRepo = new SeatRepository();
            List <Seat>    sList    = SeatRepo.GetAllSeats();

            this.SeatGridView3.DataSource = sList;
        }
コード例 #19
0
        private void UdateClicked(object sender, EventArgs e)
        {
            Train t = new Train();

            t.Trainid      = this.Tidtbox.Text;
            t.Trainname    = this.Tnametbox.Text;
            t.From         = this.textBox1.Text;
            t.To           = this.textBox2.Text;
            t.StartingTime = this.StimeDTP.Value.ToShortTimeString();
            t.ReachingTime = this.RtimeDTP.Value.ToShortTimeString();
            t.Noofseats    = Convert.ToInt32(this.NoStbox.Text);

            TrainRepository TrainRepo = new TrainRepository();

            if (TrainRepo.TrainUpdate(t))
            {
                MessageBox.Show("Train Information Updated", "Update");
            }
            else
            {
                MessageBox.Show("Can Not Add Data", "Update Error");
            }
        }
コード例 #20
0
        private void AddtrainClicked(object sender, EventArgs e)
        {
            Train t = new Train();

            t.Trainid      = this.Tidtbox.Text;
            t.Trainname    = this.Tnametbox.Text;
            t.From         = this.fromtbox.Text;
            t.To           = this.totbox.Text;
            t.StartingTime = this.StimeTDP.Value.ToShortTimeString();
            t.ReachingTime = this.RTimeTDP.Value.ToShortTimeString();
            t.Noofseats    = Convert.ToInt32(this.NoStbox.Text);

            TrainRepository TrainRepo = new TrainRepository();

            if (TrainRepo.TrainAdd(t))
            {
                MessageBox.Show("Train Information Added", "ADD");
            }
            else
            {
                MessageBox.Show("Can Not Add Data", "Insert Error");
            }
        }
コード例 #21
0
        //[Authorize]
        //[Route("api/[controller]/[action]")]
        private async Task <string> GetInspectionHtmlForPdf(int id)
        {
            //await CheckPermission();
            var ir  = new InspectionRepository(_logger);
            var tr  = new TaskRepository(_logger);
            var ur  = new UserRepository(_logger);
            var trr = new TrainRepository(_logger);

            var inspection = await ir.ById(id);

            if (inspection == null)
            {
                return("");
            }
            //throw new Exception("инспекция не найдена");

            inspection.User = await ur.ById(inspection.UserId);

            inspection.Train = await trr.ByIdWithStations(inspection.TrainId);

            var res = await tr.GetInspectionTasksForPdf(id);

            var tasks = res.FirstOrDefault();

            string checkListTypeRussian = null;

            if (inspection.CheckListType == CheckListType.TO1)
            {
                checkListTypeRussian = InspectionRussianName.To1;
            }
            if (inspection.CheckListType == CheckListType.TO2)
            {
                checkListTypeRussian = InspectionRussianName.To2;
            }
            if (inspection.CheckListType == CheckListType.Inspection)
            {
                checkListTypeRussian = InspectionRussianName.PriemkaPoezda;
            }
            if (inspection.CheckListType == CheckListType.Surrender)
            {
                checkListTypeRussian = InspectionRussianName.SdachaPoezda;
            }

            var html = "";/*"@"<html><head>
                           * <style type='text/css'>
                           * .task {
                           * border-collapse: collapse;
                           * border: 1px solid black;
                           * }
                           * .task td {
                           * padding: 5px;
                           * border: 1px solid black;
                           * }
                           * .task th {
                           * padding: 5px;
                           * background-color: #909090;
                           * border: 1px solid black;
                           * }
                           * </style></head><body>";*/

            html += "<table><tr><td>Мероприятие:</td><td>" + checkListTypeRussian + "</td></tr>";
            html += "<tr><td>Поезд:</td><td>" + inspection.Train.Name + "</td></tr>";
            html += "<tr><td>Начато:</td><td>" + inspection.DateStart + "</td></tr>";
            html += "<tr><td>Закончено:</td><td>" + inspection.DateEnd + "</td></tr>";
            html += "<tr><td>Выполнил:</td><td>" + inspection.User.Name + "</td></tr></table>";
            if (tasks != null && tasks.Tasks.Length > 0)
            {
                html +=
                    "<br /><h2>Задачи</h2><table class='task'><tr><th>Вагон</th><th>Местоположение</th><th>Оборудование</th><th>Типовая неисправность</th><th>Описание</th><th>Метка</th><th>№ задачи</th><th>Время</th></tr>";
                foreach (var task in tasks.Tasks)
                {
                    html += "<tr><td>" + task.CarriageSerialNum + "</td><td>" + task.Location + "</td><td>" + task.Equipment + "</td><td>" + task.Fault + "</td><td>" + task.Description + "</td><td>" + task.Label + "</td><td>" + task.Id + "</td><td>" + task.Created + "</td></tr>";
                }
                html += "</table><br /><br />";

                if (tasks.Labels.Any())
                {
                    html += "<h2>Метки</h2><table class='task'><tr><th>Вагон</th><th>Оборудование</th><th>Время</th><th>ИД метки</th></tr>";
                    foreach (var label in tasks.Labels)
                    {
                        html += "<tr><td>" + label.CarriageName + "</td><td>" + label.EquipmentName + "</td><td>" + label.TimeStamp + "</td><td>" + label.LabelSerial + "</td></tr>";
                    }
                    html += "</table><br /><br />";
                }

                if (tasks.Temperatures.Any())
                {
                    html += "<h2>Температура</h2><table class='task'><tr><th>Температура</th><th>Время</th><th>Температура</th><th>Время</th><th>Температура</th><th>Время</th><th>Температура</th><th>Время</th></tr>";
                    var cnt = 0;
                    foreach (var temp in tasks.Temperatures)
                    {
                        if (cnt % 4 == 0)
                        {
                            html += "<tr>";
                        }
                        html += "<td>" + temp.Value + "</td><td>" + temp.TimeStamp + "</td>";
                        if ((cnt + 1) % 4 == 0)
                        {
                            html += "</tr>";
                        }
                        cnt++;
                    }
                    var remain = 4 - (cnt % 4);
                    if (remain > 0)
                    {
                        for (var i = 0; i < remain; i++)
                        {
                            html += "<td></td><td></td>";
                        }
                        html += "</tr>";
                    }
                    html += "</table><br /><br />";
                }
            }
            else
            {
                html += "<h2>Не найдено задач</h2>";
            }

            //html += "</body></html>";
            //
            //var output = _pdfConverter.Convert(new HtmlToPdfDocument
            //{
            //    GlobalSettings = {
            //        ColorMode = ColorMode.Color,
            //        Orientation = Orientation.Portrait,
            //        PaperSize = PaperKind.A4,
            //    },
            //    Objects =
            //    {
            //        new ObjectSettings
            //        {
            //            HtmlContent = html,
            //            WebSettings = { DefaultEncoding = "utf-8" }
            //        }
            //    }
            //});
            ////
            //return File(output, "application/pdf", inspection.Id+"_"+inspection.DateStart+"_"+inspection.CheckListType+".pdf");
            return(html);
        }
コード例 #22
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);
        }
コード例 #23
0
 public TicketOffice(BookingIdGenerator bookingIdGenerator, TrainRepository trainRepository)
 {
     _bookingIdGenerator = bookingIdGenerator;
     _trainRepository    = trainRepository;
 }
コード例 #24
0
 public TrainController()
 {
     trainRepository = new TrainRepository();
 }
コード例 #25
0
        public async Task <IActionResult> GetActPdf([FromBody] int trainId)
        {
            await CheckPermission();

            if (trainId == 0)
            {
                throw new ValidationException($"Необходимо выбрать Номер состава.");
            }

            var sqlRAct = new ActCategoriesRepository();
            var html    = @"<html><head>
<style type='text/css'>
.task {
    border-collapse: collapse;
    border: 1px solid black;
}
.task td {
    padding: 5px;
    border: 1px solid black;
}
.task th {
    padding: 5px;
    border: 1px solid black;
    font-size: 80%;
}
.rotate {
    text-align: center;
    white-space: nowrap;
    vertical-align: middle;
    width: 1.5em;
}
.rotate div {
    -webkit-transform: rotate(-90.0deg);
    margin-left: -10em;
    margin-right: -10em;
}
 .break {
    page-break-after: always;
 }
</style></head><body>";

            var sqlRTrain = new TrainRepository(_logger);
            var train     = await sqlRTrain.ByIdWithStations(trainId);

            var sqlRCarriage = new CarriageRepository(_logger);
            var carriages    = await sqlRCarriage.GetByTrain(train);

            string carriagesString = null;

            carriages = carriages.OrderBy(e => e.Number).ToArray();
            foreach (var carriage in carriages)
            {
                if (carriage.Number == 9)
                {
                    continue;
                }
                carriagesString += $"{CreateCarriageNameWithOutTrain(carriage.Number)} ";
            }
            carriagesString += $"{CreateCarriageNameWithOutTrain(9)} ";

            //html += "<p align=\"center\"><font size=\"5\"><b>Акт сдачи - приемки транспорта</b></p>";
            html += "<p align=\"center\"><font size=\"4\"><b>Акт сдачи - приемки Транспорта</b></font></p>";
            html += "<p align=\"center\"><font size=\"4\"><b> в депо </b> Нахабино</font></p>";
            html += "<p><b> N </b>1</p>" +
                    $"<p> Дата {DateTime.Now.ToShortDateString()} Время {DateTime.Now.ToShortTimeString()} Номер эл/ п {train.Name}; Составность {carriages.Length} Причина проведения осмотра ТО-_____ </p>" +
                    $"<p> Нумерация вагонов в подвижном составе {carriagesString} </ p >";

            //шапка
            html += "<table class='task break'><tr><th colspan=\"3\" rowspan=\"2\"></th><th colspan=\"3\">Раздел I</th><th colspan=\"3\">Раздел II</th><th colspan=\"3\">Раздел III</th></tr>";
            html += "<tr><th>Испр</th><th>Неиспр</th><th>№ вагона</th><th>Испр</th><th>Неиспр</th><th>№ вагона</th><th>Испр</th><th>Неиспр</th><th>№ вагона</th></tr>";

            //1. Санитарное состояние
            //надо получить число записей и вставить в <th rowspan = 4>

            var         sqlrTask = new TaskRepository(_logger);
            CultureInfo us       = new CultureInfo("en-US");
            var         currentDateForFuckingSql = DateTime.Now.ToString(@"yyyy-MM-dd", us);

            //var filter =
            //$"[{{\"filter\":\"DateFrom\",\"value\":\"{currentDateForFuckingSql}\"}},{{\"filter\":\"DateTo\",\"value\":\"{currentDateForFuckingSql}\"}}]";
            var tasks = await sqlrTask.GetAllForPdf(0, Int32.MaxValue, trainId);

            var contentWithValues        = new List <ActCategoriesRepository.EquipmentActsPdf>();
            var summaryContentWithValues = new List <ActCategoriesRepository.EquipmentActsPdf>();
            //var sqlRAct = new ActCategoriesRepository();

            var badR1  = 0;
            var goodR2 = 0;
            var badR3  = 0;

            var paragraphs = new List <string>
            {
                "Санитарное состояние",
                "Электрооборудование",
                "Кузовное оборудование",
                "Прочее"
            };

            var count = 1;

            List <ActCategoriesRepository.EquipmentActsPdf> content;

            foreach (var paragraph in paragraphs)
            {
                content = await sqlRAct.GetAllForPdf(paragraph, count);

                var rowspanPlus = 2;
                if (count == 3)
                {
                    rowspanPlus = 3;
                }

                html += $@"<tr><th class='rotate' rowspan='{content.Count + rowspanPlus}'>" +
                        "<div>" +
                        $"{count}. {paragraph}" +
                        $"" +
                        "</div>" +
                        "</th></tr>";

                var countInternal = 1;
                foreach (var item in content)
                {
                    item.CarriageNumR1 = new List <int>();
                    item.CarriageNumR2 = new List <int>();
                    item.CarriageNumR3 = new List <int>();

                    if (countInternal == 12 && count == 3)
                    {
                        html += "</table><table class='task'>";
                        html += "<tr><th colspan=\"3\" rowspan=\"2\"></th><th colspan=\"3\">Раздел I</th><th colspan=\"3\">Раздел II</th><th colspan=\"3\">Раздел III</th></tr>";
                        html += "<tr><th>Испр</th><th>Неиспр</th><th>№ вагона</th><th>Испр</th><th>Неиспр</th><th>№ вагона</th><th>Испр</th><th>Неиспр</th><th>№ вагона</th></tr>";
                        html += $@"<tr><th class='rotate' rowspan='{content.Count - countInternal + rowspanPlus}'>" +
                                "<div>" +
                                $"{count}. {paragraph}" +
                                $"" +
                                "</div>" +
                                "</th></tr>";
                    }

                    await TaskFucker(sqlRAct, tasks, item);

                    contentWithValues.Add(item);
                    html += $"<tr><th>{item.Number}</th>" +
                            $"<th>{item.ActName}</th>" +
                            $"<th>{item.GoodR1}</th>" +
                            $"<th>{item.BadR1}</th>" +
                            $"<th>{sqlRAct.CreateCarriageStrintToPdf(item.CarriageNumR1)}</th>" +

                            $"<th>{item.GoodR2}</th>" +
                            $"<th>{item.BadR2}</th>" +
                            $"<th>{sqlRAct.CreateCarriageStrintToPdf(item.CarriageNumR2)}</th>" +

                            $"<th>{item.GoodR3}</th>" +
                            $"<th>{item.BadR3}</th>" +
                            $"<th>{sqlRAct.CreateCarriageStrintToPdf(item.CarriageNumR3)}</th>" +
                            $"</tr>";

                    countInternal++;
                }
                //както надо посчитать колво замечаний в каждом столбце блядь
                badR1  = 0;
                goodR2 = 0;
                badR3  = 0;
                foreach (var item in contentWithValues)
                {
                    if (item.BadR1 != null)
                    {
                        badR1 = badR1 + item.BadR1.Value;
                    }
                    if (item.GoodR2 != null)
                    {
                        goodR2 = goodR2 + item.GoodR2.Value;
                    }
                    if (item.BadR3 != null)
                    {
                        badR3 = badR3 + item.BadR3.Value;
                    }
                }

                string s1 = null;
                string s2 = null;
                string s3 = null;
                if (badR1 != 0)
                {
                    s1 = badR1.ToString();
                }
                if (goodR2 != 0)
                {
                    s2 = goodR2.ToString();
                }
                if (badR3 != 0)
                {
                    s3 = badR3.ToString();
                }


                html +=
                    $"<tr><th colspan=\"2\"><b>Всего замечаний</b></th><th></th><th>{s1}</th><th></th><th>{s2}</th><th></th><th></th><th></th><th>{s3}</th><th></th></tr>";
                summaryContentWithValues.AddRange(contentWithValues);
                contentWithValues.Clear();
                count++;

                if (count == 4)
                {
                    html +=
                        "<tr><th></th><th>4.</th><th><b>Составность не соответствует заявке</b></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr>";
                    count++;
                }
            }

            //ИТОГО

            badR1  = 0;
            goodR2 = 0;
            badR3  = 0;
            foreach (var item in summaryContentWithValues)
            {
                if (item.BadR1 != null)
                {
                    badR1 = badR1 + item.BadR1.Value;
                }
                if (item.GoodR2 != null)
                {
                    goodR2 = goodR2 + item.GoodR2.Value;
                }
                if (item.BadR3 != null)
                {
                    badR3 = badR3 + item.BadR3.Value;
                }
            }

            string ss1 = null;
            string ss2 = null;
            string ss3 = null;

            if (badR1 != 0)
            {
                ss1 = badR1.ToString();
            }
            if (goodR2 != 0)
            {
                ss2 = goodR2.ToString();
            }
            if (badR3 != 0)
            {
                ss3 = badR3.ToString();
            }

            html += $"<tr><th></th><th colspan=\"2\"><b>ИТОГО по санитарно - техническому состоянию</b></th><th></th><th>{ss1}</th><th></th><th>{ss2}</th><th></th><th>" +
                    $"</th><th></th><th>{ss3}</th><th></th></tr>";

            html += "</table><br /><br />";

            //надписи под таблицей

            var checkBoxHtml = "<input maxlength = \"1\" size = \"1\" type = \"text\">";
            var probel       = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
            var probel2      = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
            var probel3      = "&nbsp;";


            html += $"<p><font size=\"2\">{probel}Эл.поезд эксплуатационным нормам безопасности движения {checkBoxHtml}соответствует {checkBoxHtml}не соответсвует</font></p>";

            html += $"<p><font size=\"2\">На основании дейтв. нормативных документов эксплуатации поезда {checkBoxHtml}разрешена{probel3}{checkBoxHtml}запрещена</font></p>";

            html += $"<p><font size=\"2\">Поезд к первоочередн. устранению {checkBoxHtml}      Повторная проверка проведена: _______________      Время Выхода из депо________</font></p>";
            html += $"<p><font size=\"2\">по результатам повторной проверки эксплуатация поезда {checkBoxHtml}разрешена   {checkBoxHtml}запрещена       <b>Выдан на линию воопреки запрета в</b>________</font></p>";

            html += $"<p align=\"right\"><font size=\"2\"><b>Приёмку подвижного состава до постановки на ТО(ТР) произвели</b></font>{probel2}{probel2}</p>";

            html += $"<p align=\"center\"><font size=\"2\"><b>Представитель ПАО \"ЦППК\" - приёмщик ООО \"Профлайн\"_________________{probel2}{probel2}/_______________/</b></font></p>";
            html += $"<p align=\"center\"><font size=\"2\"><b>Представитель депо <u>{probel2}{probel2}Нахабино{probel2}{probel2}бригадир{probel2}{probel2}{probel2}</u>{probel2}{probel2}/_______________/</b></font></p>";

            html += $"<p align=\"right\"><font size=\"2\"><b>Приёмку подвижного состава после проведения ТО(ТР) произвели</b></font>{probel2}{probel2}</p>";
            html += $"<p align=\"center\"><font size=\"2\"><b>Представитель ПАО \"ЦППК\" - приёмщик ООО \"Профлайн\"_________________{probel2}{probel2}/_______________/</b></font></p>";
            html += $"<p align=\"center\"><font size=\"2\"><b>Представитель депо <u>{probel2}{probel2}Нахабино{probel2}{probel2}бригадир{probel2}{probel2}{probel2}</u>{probel2}{probel2}/_______________/</b></font></p>";

            html += "<br /><br /><body></html>";
            //
            var output = _pdfConverter.Convert(new HtmlToPdfDocument
            {
                GlobalSettings =
                {
                    ColorMode   = ColorMode.Color,
                    Orientation = Orientation.Portrait,
                    PaperSize   = PaperKind.A4,
                },
                Objects =
                {
                    new ObjectSettings
                    {
                        HtmlContent = html,
                        WebSettings ={ DefaultEncoding                   = "utf-8" }
                    }
                }
            });

            //


            return(File(output, "application/pdf", "1111" + "_" + "2222" + "_" + "3333" + ".pdf"));
        }
コード例 #26
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);
        }
コード例 #27
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);
        }
コード例 #28
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);
        }
コード例 #29
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);
        }
コード例 #30
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);
        }