//public async Task<PlaneStantionOnTrip> ByPlanedRouteTrainIdAndStationId(int planedRouteTrainId, int stationId) //{ // using (var conn = new SqlConnection(AppSettings.ConnectionString)) // { // var result = // await conn.QueryFirstOrDefaultAsync<PlaneStantionOnTrip>( // _sql.ByPlanedRouteTrainIdAndStationId(planedRouteTrainId, stationId)); // return result; // } //} public async Task <PlaneStantionOnTrip> Add(PlaneStantionOnTrip input) { using (var conn = new SqlConnection(AppSettings.ConnectionString)) { var id = await conn.QueryFirstOrDefaultAsync <int>(_sql.Add(input)); return(await ById(id)); } }
public string Add(PlaneStantionOnTrip input) { return($@" insert into {Table} ([InTime], [OutTime], [StantionId], [TripId], PlanedRouteTrainId) values ('{input.InTime}', '{input.OutTime}', {input.StantionId}, {input.TripId}, {input.PlanedRouteTrainId}) SELECT SCOPE_IDENTITY() "); }
public string Update(PlaneStantionOnTrip input) { return($@" update {Table} set InTime = '{input.InTime}', OutTime = '{input.OutTime}', StantionId = {input.StantionId}, TripId = {input.TripId}, PlanedRouteTrainId = {input.PlanedRouteTrainId} where id = {input.Id} "); }
private async Task <List <StantionQq> > GetStationsFromPlanedRouteByIdAndDay(int planedRouteTrainId, DateTime day, int userId, int?inputStationId = 0) { var result = new List <Stantion>(); var sqlRStations = new StantionsRepository(_logger); var sqlRPlanedStOnTrips = new PlanedStationOnTripsRepository(_logger); var sqlRTrip = new TripsRepository(_logger); if (userId == 0) { throw new ValidationException(Error.NotFilledOptionalField); } PlaneStantionOnTrip inputSt = null; if (inputStationId != 0) { inputSt = await sqlRPlanedStOnTrips.ById(inputStationId.Value); } var currentDayPlaneBrigadeTrain = await sqlRPlanedStOnTrips.ByUserIdAndTimeRange(userId, day.Date.AddHours(3), day.Date.AddDays(1).AddMilliseconds(-1)); //busyPlanedSt = busyPlanedSt.Where(x => x.PlanedRouteTrainId != planedRouteTrainId).ToList(); //var curPlanedRoute = await sqlPlanedBr.ByPlannedRouteTrainId(planedRouteTrainId); var currentPlanedRSt = await sqlRPlanedStOnTrips.ByPlannedRouteTrainId(planedRouteTrainId); currentPlanedRSt = currentPlanedRSt.OrderBy(x => x.OutTime).ToList(); //var curPlanedRouteBr = await sqlPlanedBr.ByPlannedRouteTrainId(planedRouteTrainId); var usedPlaneSt = new List <PlaneStantionOnTrip>(); if (currentPlanedRSt.Any()) { foreach (var item in currentDayPlaneBrigadeTrain) { //все станки маршрута, на который назначена данная запись var planSts = (await sqlRPlanedStOnTrips.ByPlannedRouteTrainId(item.PlanedRouteTrainId)) .OrderBy(x => x.OutTime).ToList(); var start = planSts.IndexOf(planSts.First(x => x.Id == item.StantionStartId)) + 1; var end = planSts.IndexOf(planSts.First(x => x.Id == item.StantionEndId)) + 1; usedPlaneSt.AddRange(planSts.GetRange(start, end - start)); } } usedPlaneSt = usedPlaneSt.DistinctBy(x => x.Id).ToList(); DateTime?minUsedTime = null; DateTime?maxUsedTime = null; if (usedPlaneSt.Count > 1) { minUsedTime = usedPlaneSt.First().OutTime; maxUsedTime = usedPlaneSt.Last().InTime; } if (usedPlaneSt.Count == 1) { minUsedTime = usedPlaneSt.First().OutTime; maxUsedTime = usedPlaneSt.First().InTime; } if (minUsedTime != null && maxUsedTime != null) { if (inputSt != null) { if (inputSt.OutTime <= minUsedTime) { maxUsedTime = ((DateTime)maxUsedTime).AddDays(1); } if (inputSt.OutTime >= maxUsedTime) { minUsedTime = ((DateTime)minUsedTime).AddDays(-1); } } } var res1 = new List <StantionQq>(); var currentTripId = 0; for (var index = 0; index < currentPlanedRSt.Count; index++) { var item = currentPlanedRSt[index]; var trip = await sqlRTrip.ById(item.TripId); if (minUsedTime != null && maxUsedTime != null) { if (item.InTime >= minUsedTime && item.InTime <= maxUsedTime) { continue; } if (item.OutTime >= minUsedTime && item.OutTime <= maxUsedTime) { continue; } } //foreach (var x in usedPlaneSt) //{ // if (item.InTime >= x.InTime && item.InTime <= x.OutTime) // isUsed = true; // if (item.OutTime >= x.InTime && item.OutTime <= x.OutTime) // isUsed = true; //} //if (isUsed) // continue; var station = await sqlRStations.ById(item.StantionId); station.Id = item.Id; //station.Name += $" ({item.InTime.ToStringTimeOnly()})"; var sqq = _mapper.Map <Stantion, StantionQq>(station); sqq.InTime = item.InTime; sqq.TripName = trip.Name; var qqStart = item.InTime.ToStringTimeOnly(); var qqEnd = item.OutTime.ToStringTimeOnly(); if (currentTripId == 0 || item.TripId != currentTripId) { qqStart = "н/д"; } if (index != currentPlanedRSt.Count - 1) { if (currentPlanedRSt[index + 1].TripId != item.TripId && currentTripId != 0) { qqEnd = "н/д"; } } else { qqEnd = "н/д"; } var qq1 = $"{station.Name} {qqStart}-{qqEnd} ({trip.Name})"; sqq.Name += $" ({qq1})"; res1.Add(sqq); currentTripId = item.TripId; //result.Add(station); } return(res1); }