示例#1
0
        public async Task UpdateRouteAsync(int id, RouteQueued routeQueued)
        {
            var routeFromDb = await _context
                              .RoutesQueued
                              .Include(r => r.CarrierQueued)
                              .SingleOrDefaultAsync(x => x.Id == id);

            routeQueued.Id = routeFromDb.Id;

            if (routeFromDb.VotingStartedDatetime == null)
            {
                routeQueued.VotingStartedDatetime = DateTime.Now.Date;
                routeQueued.VotingEndedDateTime   = routeQueued.VotingStartedDatetime.Value.AddDays(14);
            }

            _context.Entry(routeFromDb).CurrentValues.SetValues(routeQueued);
            _context.Entry(routeFromDb).State = EntityState.Modified;

            if (routeQueued.CarrierQueued != null)
            {
                _context.Entry(routeFromDb.CarrierQueued).CurrentValues.SetValues(routeQueued.CarrierQueued);
                _context.Entry(routeFromDb.CarrierQueued).State = EntityState.Modified;
            }



            await _context.SaveChangesAsync();
        }
示例#2
0
        private void Move(RouteQueued routeQueued)
        {
            var busStops = routeQueued.BusStopsQueued.Select(q => new BusStop
            {
                Address   = q.Address,
                Hour      = q.Hour,
                Label     = q.Label,
                Latitude  = q.Latitude,
                Longitude = q.Longitude
            }).ToList();

            var route = new Route
            {
                Name         = routeQueued.Name,
                BusStops     = busStops,
                DayOfTheWeek = routeQueued.DayOfTheWeek,
            };

            if (routeQueued.CarrierQueued != null && routeQueued.CarrierId == null)
            {
                route.Carrier = new Carrier
                {
                    Name = routeQueued.CarrierQueued.Name
                };
            }
            else
            {
                route.CarrierId = (int)routeQueued.CarrierId;
            }

            _context.Routes.Add(route);
            _context.SaveChanges();
        }
示例#3
0
        public async Task <bool> PostRouteQueuedAsync(RouteQueued routeQueued)
        {
            var json = JsonConvert.SerializeObject(routeQueued);

            var result = await _httpClient.PostAsync(Uri + "/queues/routes", AddMediaTypeHeaderValueToJson(json));

            return(result.IsSuccessStatusCode);
        }
示例#4
0
        public async Task <bool> UpdateQueuedRoute(int id, RouteQueued updatedRouteQueued)
        {
            var json = JsonConvert.SerializeObject(updatedRouteQueued);

            var result = await _httpClient.PutAsync($"{Uri}queues/routes/{id}", AddMediaTypeHeaderValueToJson(json));

            return(result.IsSuccessStatusCode);
        }
示例#5
0
        public async Task AddRouteToQueueAsync(RouteQueued routeQueued)
        {
            var orderedBusStops = routeQueued.BusStopsQueued.OrderBy(b => b.Hour).ToList();

            routeQueued.BusStopsQueued = orderedBusStops;
            await _context.RoutesQueued.AddAsync(routeQueued);

            await _context.SaveChangesAsync();
        }
示例#6
0
        private void DeleteAfterMove(RouteQueued routeQueuedToRemove)
        {
            if (routeQueuedToRemove.CarrierQueued != null)
            {
                _context.CarriersQueued.Remove(routeQueuedToRemove.CarrierQueued);
            }
            else
            {
                _context.RoutesQueued.Remove(routeQueuedToRemove);
            }

            _context.SaveChanges();
        }
示例#7
0
        public async Task AddRouteToQueueAsync_WhenBusStopsHoursAreNotInOrder_AddingBusStopsAnywayInGoodOrder()
        {
            var timeSpanList = new List <TimeSpan>
            {
                new TimeSpan(12, 0, 0),
                new TimeSpan(12, 5, 0),
                new TimeSpan(12, 25, 0),
                new TimeSpan(12, 40, 0)
            };
            var routeToAdd = new RouteQueued
            {
                Id              = 1034,
                Name            = "Name",
                CarrierQueuedId = 5,
                BusStopsQueued  = new List <BusStopQueued>
                {
                    new BusStopQueued
                    {
                        Id   = 2001,
                        Hour = timeSpanList[2]
                    },
                    new BusStopQueued
                    {
                        Id   = 2002,
                        Hour = timeSpanList[0]
                    },
                    new BusStopQueued
                    {
                        Id   = 2003,
                        Hour = timeSpanList[3]
                    },
                    new BusStopQueued
                    {
                        Id   = 2004,
                        Hour = timeSpanList[1]
                    },
                }
            };

            await _queueRepository.AddRouteToQueueAsync(routeToAdd);

            var result = await _context.RoutesQueued.ToListAsync();

            var resultHours = result
                              .Last()
                              .BusStopsQueued
                              .Select(b => b.Hour)
                              .ToList();

            Assert.AreEqual(timeSpanList, resultHours);
        }
示例#8
0
        public async Task <IActionResult> PutRoute([FromRoute] int id, [FromBody] RouteQueued routeQueued)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                await _service.UpdateRouteAsync(id, routeQueued);
            }
            catch (Exception)
            {
                return(BadRequest("Wrong body data"));
            }

            return(StatusCode(202));
        }
示例#9
0
        public async Task <IActionResult> PostRouteToQueue([FromBody] RouteQueued routeQueued)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                await _service.AddRouteToQueueAsync(routeQueued);
            }
            catch (DbUpdateException)
            {
                return(BadRequest("Route queued object is incomplete or contains wrong data."));
            }

            return(StatusCode(201));
        }
示例#10
0
        public async Task SetUp()
        {
            var options = new DbContextOptionsBuilder <DatabaseContext>()
                          .UseInMemoryDatabase(databaseName: "TestDb")
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          .Options;

            _context = new DatabaseContext(options);

            _queueRepository = new QueueRepository(_context);

            var carrierQueued1 = new CarrierQueued
            {
                Id   = 1,
                Name = "CarrierQueued"
            };
            var carrierQueued2 = new CarrierQueued
            {
                Id   = 2,
                Name = "CarrierQueued2"
            };
            var carrierQueued3 = new CarrierQueued
            {
                Id   = 3,
                Name = "CarrierQueued3"
            };
            var carrierQueued4 = new CarrierQueued
            {
                Id   = 4,
                Name = "CarrierQueued4"
            };
            var carrierQueued5 = new CarrierQueued
            {
                Id   = 5,
                Name = "CarrierQueued4"
            };

            var route1 = new RouteQueued
            {
                Id                    = 1,
                Name                  = "routeQueuedName",
                CarrierQueued         = carrierQueued1,
                CreatedDatetime       = new DateTime(1998, 1, 1),
                VotingStartedDatetime = new DateTime(1998, 1, 1),
                VotingEndedDateTime   = new DateTime(1998, 1, 15),
                DayOfTheWeek          = "1,2,3",
                PositiveVotes         = 10,
                NegativeVotes         = 2,
                BusStopsQueued        = new List <BusStopQueued>
                {
                    new BusStopQueued //150km
                    {
                        Id        = 1,
                        Address   = "Address1",
                        Label     = "Label1",
                        Latitude  = 53.553832,
                        Longitude = 21.422401
                    },
                    new BusStopQueued //8km
                    {
                        Id        = 2,
                        Address   = "Address2",
                        Label     = "Label2",
                        Latitude  = 52.295105,
                        Longitude = 20.944934
                    }
                }
            };
            var route2 = new RouteQueued
            {
                Id                    = 2,
                Name                  = "routeQueuedName2",
                CarrierQueued         = carrierQueued2,
                CreatedDatetime       = new DateTime(1998, 1, 1),
                VotingStartedDatetime = new DateTime(1998, 1, 2),
                VotingEndedDateTime   = new DateTime(1998, 1, 16),
                DayOfTheWeek          = "1,2,3",
                PositiveVotes         = 6,
                NegativeVotes         = 2,
                BusStopsQueued        = new List <BusStopQueued>
                {
                    new BusStopQueued //150km
                    {
                        Id        = 3,
                        Address   = "Address1",
                        Label     = "Label1",
                        Latitude  = 53.553832,
                        Longitude = 21.422401
                    },
                    new BusStopQueued //170km
                    {
                        Id        = 4,
                        Address   = "Address2",
                        Label     = "Label2",
                        Latitude  = 53.733411,
                        Longitude = 21.451130
                    },
                    new BusStopQueued //10.3km
                    {
                        Id        = 5,
                        Address   = "Address3",
                        Label     = "Label3",
                        Latitude  = 52.215682,
                        Longitude = 20.855198
                    }
                }
            };
            var route3 = new RouteQueued
            {
                Id                    = 3,
                Name                  = "routeQueuedName3",
                CarrierQueued         = carrierQueued3,
                CreatedDatetime       = new DateTime(1998, 1, 1),
                VotingStartedDatetime = new DateTime(1998, 1, 3),
                VotingEndedDateTime   = new DateTime(1998, 1, 16),
                DayOfTheWeek          = "1,2,3",
                PositiveVotes         = 22,
                NegativeVotes         = 2,
                BusStopsQueued        = new List <BusStopQueued>
                {
                    new BusStopQueued //150km
                    {
                        Id        = 6,
                        Address   = "Address6",
                        Label     = "Label1",
                        Latitude  = 53.553832,
                        Longitude = 21.422401
                    },
                    new BusStopQueued //170km
                    {
                        Id        = 7,
                        Address   = "Address7",
                        Label     = "Label2",
                        Latitude  = 53.733411,
                        Longitude = 21.451130
                    },
                    new BusStopQueued //10.3km
                    {
                        Id        = 8,
                        Address   = "Address8",
                        Label     = "Label3",
                        Latitude  = 52.215682,
                        Longitude = 20.855198
                    }
                }
            };
            var route4 = new RouteQueued
            {
                Id                    = 4,
                Name                  = "routeQueuedName4",
                CarrierQueued         = carrierQueued4,
                CreatedDatetime       = new DateTime(1998, 1, 5),
                VotingStartedDatetime = new DateTime(1998, 1, 6),
                VotingEndedDateTime   = new DateTime(1998, 1, 20),
                DayOfTheWeek          = "1,2,3",
                PositiveVotes         = 22,
                NegativeVotes         = 2,
                BusStopsQueued        = new List <BusStopQueued>
                {
                    new BusStopQueued //150km
                    {
                        Id        = 9,
                        Address   = "Address6",
                        Label     = "Label1",
                        Latitude  = 53.553832,
                        Longitude = 21.422401
                    },
                    new BusStopQueued //170km
                    {
                        Id        = 10,
                        Address   = "Address7",
                        Label     = "Label2",
                        Latitude  = 53.733411,
                        Longitude = 21.451130
                    },
                    new BusStopQueued //10.3km
                    {
                        Id        = 11,
                        Address   = "Address8",
                        Label     = "Label3",
                        Latitude  = 52.215682,
                        Longitude = 20.855198
                    }
                }
            };
            var route5 = new RouteQueued
            {
                Id                    = 5,
                Name                  = "routeQueuedName5",
                CarrierQueued         = carrierQueued5,
                CreatedDatetime       = new DateTime(1998, 1, 5),
                VotingStartedDatetime = new DateTime(1998, 1, 2),
                VotingEndedDateTime   = new DateTime(1998, 1, 15),
                DayOfTheWeek          = "1,2,3",
                PositiveVotes         = 15,
                NegativeVotes         = 15,
                BusStopsQueued        = new List <BusStopQueued>
                {
                    new BusStopQueued //150km
                    {
                        Id        = 12,
                        Address   = "Address6",
                        Label     = "Label1",
                        Latitude  = 53.553832,
                        Longitude = 21.422401
                    },
                    new BusStopQueued //170km
                    {
                        Id        = 13,
                        Address   = "Address7",
                        Label     = "Label2",
                        Latitude  = 53.733411,
                        Longitude = 21.451130
                    },
                    new BusStopQueued //10.3km
                    {
                        Id        = 14,
                        Address   = "Address8",
                        Label     = "Label3",
                        Latitude  = 52.215682,
                        Longitude = 20.855198
                    }
                }
            };

            var routes = new List <RouteQueued>()
            {
                route1,
                route2,
                route3,
                route4,
                route5
            };

            await _context.RoutesQueued.AddRangeAsync(routes);

            await _context.SaveChangesAsync();
        }
示例#11
0
 public async Task UpdateRouteAsync(int id, RouteQueued routeQueued)
 => await _repository.UpdateRouteAsync(id, routeQueued);
示例#12
0
 public async Task AddRouteToQueueAsync(RouteQueued routeQueued)
 => await _repository.AddRouteToQueueAsync(routeQueued);