Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        /// <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
            });
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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));
            }
        }
Ejemplo n.º 10
0
        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;
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
 public void Add(ConnectionPart conPart)
 {
     ConnectionsParts.Add(conPart);
 }