public void SearchTest() { // Arrange Path path = new Path() { Track = new List <Route>() { Data.Routes.First() } }; ConnectionPart conPart = new ConnectionPart() { Route = Data.Routes.First(), StartTime = DateTime.Now.AddHours(1), EndTime = DateTime.Now.AddHours(2) }; conPart.Connection = new Connection() { Parts = new List <ConnectionPart>() { conPart } }; Data.ConnectionParts.Add(conPart); Data.SaveChanges(); // Act List <ConnectionPath> conPath = path.SecondSearch(DateTime.Now, Data); // Assert Assert.IsTrue(conPath.Where(cp => cp.ConnectionsParts.Contains(conPart)).Count() == 1); }
public void BuyTicketTest() { // Arrange var data = unitOfFactory.CreateTransactionalUnitOfWork(); User user = new User() { Login = "******", Password = "******", Tickets = "1,2,3:1-14,15,16;1,1,3,3:1-24,25,26,27" }; data.Users.Add(user); data.SaveChanges(); DiscountsController discountController = new DiscountsController(unitOfFactory); var discountResult = discountController.GetDiscount(1); var discount = (discountResult.Result as OkNegotiatedContentResult <DiscountDTO>).Content; Dictionary <DiscountDTO, int> dict = new Dictionary <DiscountDTO, int>(); dict.Add(discount, 2); ConnectionPathDTO conPath = new ConnectionPathDTO(); Connection con = data.Connections.Find(1); ConnectionDTO conDTO = Mapper.Map <Connection, ConnectionDTO>(con); ConnectionPart conPart = new ConnectionPart { Connection = con, Id = 9999999, Seats = "1;2;3", FreeSeats = 3, Route = data.Routes.Find(1), StartTime = DateTime.Now, EndTime = DateTime.Now.AddMinutes(30) }; data.ConnectionParts.Add(conPart); data.SaveChanges(); conPath.ConnectionsParts = new List <ConnectionPartDTO> { Mapper.Map <ConnectionPart, ConnectionPartDTO>(conPart) }; UserDTO userDTO = Mapper.Map <User, UserDTO>(data.Users.Where(u => u.Login == user.Login).First()); TicketDTO ticketDTO = new TicketDTO() { Discounts = dict, User = userDTO, ConnectionPath = conPath, Seats = new List <int[]> { new int[] { 1, 3 } } }; TicketsModel ticketsModel = new TicketsModel(); data.SaveChanges(); // Act ticketsModel.BuyTicket(ticketDTO, data); // Assert Assert.AreEqual("2", conPart.Seats); Assert.AreEqual(string.Format("1,2,3:1-14,15,16;1,1,3,3:1-24,25,26,27;1,1:{0}-1,3", conPart.Id), user.Tickets); }
private static Connection MappConnectionDTO2Connection(ConnectionDTO conDTO) { Connection con = new Connection() { EndPlace = conDTO.EndPlace, Id = conDTO.Id, Version = conDTO.Version, Name = conDTO.Name, StartPlace = conDTO.StartPlace, Train = Mapper.Map <TrainDTO, Train>(conDTO.Train), Parts = new List <ConnectionPart>() }; foreach (var part in conDTO.Parts) { ConnectionPart conpart = new ConnectionPart() { EndTime = part.EndTime, FreeSeats = part.FreeSeats, Id = part.Id, Seats = part.Seats, StartTime = part.StartTime, Version = part.Version, Route = Mapper.Map <RouteDTO, Route>(part.Route), }; conpart.Connection = con; con.Parts.Add(conpart); } return(con); }
/// <summary> /// Checks if the given Node is stored in the Connection /// </summary> /// <param name="node">The Node which should be contained</param> /// <param name="direction">The part which should store the Node</param> /// <returns>Returns True if the Node is stored and False otherwise</returns> public bool Contains(Node node, int hindleID, ConnectionPart direction) { switch (direction) { case ConnectionPart.From: { for (int f = 0; f < froms.Count; f++) { if (froms[f] == node && fromAttributes[f].ID == hindleID) { return(true); } } } break; case ConnectionPart.To: { if (to == node && toAttribute.ID == hindleID) { return(true); } } break; } return(false); }
private void AddConnectionTask() { string seat = seats; int numberOfSeats = 80; if (SelectedTrainType == "Ekspres") { seat = expressSeats; numberOfSeats = 60; } Connection connection = new Connection() { StartPlace = stations[0], EndPlace = stations[stations.Count - 1], Train = trains.Where(t => t.Type == SelectedTrainType).First(), Name = ConnectionName, }; ConnectionPart[] parts = new ConnectionPart[stations.Count - 1]; int k = 0; for (int i = 0; i < parts.Length; i++) { parts[i] = new ConnectionPart(); string from = stations[i]; string to = stations[i + 1]; parts[i].Route = routes.Where(r => r.From == from && r.To == to).First(); if (i == 0) { parts[i].StartTime = startDate; parts[i].EndTime = startDate.AddMinutes(times[k++]); } else { parts[i].StartTime = startDate.AddMinutes(times[k++]); parts[i].EndTime = startDate.AddMinutes(times[k++]); } parts[i].Seats = seat; parts[i].FreeSeats = numberOfSeats; } foreach (var part in parts) { connection.Parts.Add(part); } try { unitOfWork.AddConnection(connection); } catch (AggregateException e) { SendInfo(); return; } eventAggregator.PublishOnUIThread(new InformationToUser { Message = "Zapisano połączenie.", Color = Brushes.Lime }); }
public static ConnectionPart GetConnectionPart(HttpClient client, ConnectionPart part) { string request = "api/ConnectionParts/" + part.Id; var response = client.GetAsync(request).Result; response.EnsureSuccessStatusCode(); var resultDTO = response.Content.ReadAsAsync <ConnectionPartDTO>().Result; var result = Mapper.Map <ConnectionPartDTO, ConnectionPart>(resultDTO); return(result); }
private ConnectionPart FindBestConnectionPart(int i, DateTime userTime, IEasyTrainTicketsDbEntities dbContext) { int minTime = Min(i, userTime, dbContext); if (minTime > 300) { return(null); } ConnectionPart conPart = ListOfConnections(i, userTime, dbContext).Where(cp => SqlMethods.DateDiffMinute(userTime, cp.StartTime) == minTime).First(); return(conPart); }
private static ConnectionPartDTO MappConnectionPart2ConnectionPartDTO(ConnectionPart conPart) { ConnectionPartDTO conDTO = new ConnectionPartDTO() { EndTime = conPart.EndTime, FreeSeats = conPart.FreeSeats, Id = conPart.Id, Seats = conPart.Seats, StartTime = conPart.StartTime, Version = conPart.Version, Route = Mapper.Map <Route, RouteDTO>(conPart.Route), }; conDTO.Connection = new ConnectionDTO() { EndPlace = conPart.Connection.EndPlace, Id = conPart.Connection.Id, Version = conPart.Connection.Version, Name = conPart.Connection.Name, StartPlace = conPart.Connection.StartPlace, Train = Mapper.Map <Train, TrainDTO>(conPart.Connection.Train), }; conDTO.Connection.Parts = new List <ConnectionPartDTO>(); foreach (var part in conPart.Connection.Parts) { if (part.Id == conDTO.Id) { conDTO.Connection.Parts.Add(conDTO); } else { ConnectionPartDTO conpart = new ConnectionPartDTO() { EndTime = part.EndTime, FreeSeats = part.FreeSeats, Id = part.Id, Seats = part.Seats, StartTime = part.StartTime, Version = part.Version, Route = Mapper.Map <Route, RouteDTO>(part.Route), }; conpart.Connection = conDTO.Connection; conDTO.Connection.Parts.Add(conpart); } } return(conDTO); }
public async Task <IHttpActionResult> GetConnectionPart(int id) { using (var dbcontext = unitOfWorkFactory.CreateUnitOfWork()) { ConnectionPart connectionPart = await Task.Run(() => dbcontext.ConnectionParts.Where(con => con.Id == id).First()); if (connectionPart == null) { return(NotFound()); } var q = Mapper.Map <ConnectionPart, ConnectionPartDTO>(connectionPart); return(Ok(q)); } }
public void AddConnectionPart(AddConnectionViewModel viewModel, IEasyTrainTicketsDbEntities dbContext, Connection connection) { List <Route> routes = dbContext.Routes.ToList(); string idRoute = viewModel.SelectRoute.Split('.').First(); int id = Int16.Parse(idRoute); Route route = routes.Where(r => r.Id == id).First(); ConnectionPart conPart = new ConnectionPart() { Route = route, Connection = connection }; if (connection.Parts.Count == 0) { conPart.StartTime = viewModel.StartTime; conPart.EndTime = conPart.StartTime.AddMinutes(viewModel.Variance + route.BestTime); } else { conPart.StartTime = connection.Parts.Last().EndTime.AddMinutes(viewModel.StopTime); conPart.EndTime = conPart.StartTime.AddMinutes(viewModel.Variance + route.BestTime); } string seats = @"11;12;13;14;15;16;17;18;21;22;23;24;25;26;27;28;31;32;33;34;35;36;37;38;41;42;43;44;45;46;47;48;51;52;53;54;55;56;57;58;61;62;63;64;65;66;67;68;71;72;73;74;75;76;77;78;81;82;83;84;85;86;87;88;91;92;93;94;95;96;97;98;101;102;103;104;105;106;107;108"; string expressSeats = @"11;12;13;14;15;16;21;22;23;24;25;26;31;32;33;34;35;36;41;42;43;44;45;46;51;52;53;54;55;56;61;62;63;64;65;66;71;72;73;74;75;76;81;82;83;84;85;86;91;92;93;94;95;96;101;102;103;104;105;106"; if (connection.Train.Type == "Ekspres") { conPart.Seats = expressSeats; conPart.FreeSeats = 60; } else if (connection.Train.Type == "Pośpieszny") { conPart.Seats = seats; conPart.FreeSeats = 80; } string endStation = viewModel.SelectRoute.Split('>').Last(); endStation = endStation.Substring(1); foreach (var r in routes.Where(r => r.From == endStation)) { viewModel.AvailableRoutes.Add(String.Format("{0}. {1} => {2}", r.Id, r.From, r.To)); } viewModel.SelectRoute = null; connection.Parts.Add(conPart); viewModel.Connection.Connection = connection; }
public bool DeleteTicket(Ticket ticket, IEasyTrainTicketsDbEntities dbContext, ApplicationUserManager userManager) { ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager <ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); string ticketString = ticket.StringTicket; string userTickets = user.Tickets; int index = userTickets.IndexOf(ticketString); string newTickets; if (index < 0) { return(false); } else if (ticketString.Length == userTickets.Length) { newTickets = ""; } else if (index == userTickets.Length - ticketString.Length) { newTickets = userTickets.Remove(index - 1, ticketString.Length + 1); } else { newTickets = userTickets.Remove(index, ticketString.Length + 1); } user.Tickets = newTickets; for (int i = 0; i < ticket.conPartsId.Count; i++) { int id = ticket.conPartsId[i]; ConnectionPart conPart = dbContext.ConnectionParts.Where(cp => cp.Id == id).First(); if (conPart.Seats == "") { conPart.Seats = string.Join(",", ticket.Seats[i]).Replace(',', ';'); } else { conPart.Seats = String.Format("{0};{1}", conPart.Seats, string.Join(",", ticket.Seats[i]).Replace(',', ';')); } conPart.FreeSeats += ticket.Seats[i].Length; } dbContext.SaveChanges(); userManager.Update(user); return(true); }
public void Add(ConnectionPart conPart) { ConnectionsParts.Add(conPart); }