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