public IHttpActionResult ReserveFlight(int flightId, int userId, double price)
        {
            FlightReservation reservation = new FlightReservation();

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                userId.GetType();

                reservation = new FlightReservation()
                {
                    FlightId = flightId,
                    UserId   = userId,
                    Price    = (long)price,
                    Status   = 1,
                    Message  = "Sucessfull reservation!"
                };

                objEntity.FlightReservations.Add(reservation);
                objEntity.SaveChanges();

                SendConfirmationEmail(userId, reservation);
            }
            catch (Exception ex)
            {
                reservation.Status  = 0;
                reservation.Message = "Cannot proceed with reservation";
            }
            return(Ok(reservation.Status));
        }
        private void SendConfirmationEmail(int userId, FlightReservation fr)
        {
            Guid activationCode = Guid.NewGuid();

            //objEntity.UserActivations.Add(new UserActivation
            //{
            //    UserId = userId,
            //    ActivationCode = activationCode
            //});
            //objEntity.SaveChanges();
            var user   = objEntity.UserDetails.Find(userId);
            var flight = objEntity.Flights.Find(fr.FlightId);

            using (MailMessage mm = new MailMessage("*****@*****.**", user.Email))
            {
                mm.Subject = "Account Activation";
                string body = "Hello " + user.Email + ",";
                body += "<br /><br />You have successfully reserved flight number:" + fr.FlightId + "\nDestination: " + flight.MestoPoletanja + "-" + flight.MestoSletanja;
                // body += "<br /><a href = '" + string.Format("http://*****:*****@gmail.com", "11208995vs");
                //smtp.Timeout = 10000;
                smtp.UseDefaultCredentials = false;
                smtp.Credentials           = NetworkCred;
                smtp.Port = 587;
                smtp.Send(mm);
            }
        }
Beispiel #3
0
        public static void AddFastFlightReservation(ReservationForm form)
        {
            using (var _context = new DiemServiceDB())
            {
                string caller = ((ClaimsPrincipal)HttpContext.Current.User).FindFirst("username").Value;
                User   found  = _context.UserDbSet.Where(u => u.Username == caller).FirstOrDefault();
                if (found.Role != Role.RegisteredUser || found == null || form.FlightId == 0 /*|| form.Seat == 0*/ || form.Passport == 0)
                {
                    throw new Exception("BAD QUERY");
                }

                Flight        wanted = _context.FlightDbSet.Where(u => u.Id == form.FlightId).FirstOrDefault();
                StringBuilder sb     = new StringBuilder(wanted.Seats);
                if (sb[form.Seat] != '5')
                {
                    throw new Exception("NOT AN OFFER");
                }
                sb[form.Seat] = '1';
                wanted.Seats  = sb.ToString();
                FlightReservation fr = _context.FlightReservationDbSet.Add(new FlightReservation(found.Name, found.LastName, form.Seat, form.Passport, found, wanted));
                _context.RegisteredUserDbSet.Where(u => u.Id == found.UlogaID).First().FlightReservations.Add(fr);
                MailServiceManager.SendReservationEmail(fr);
                wanted.Reservations.Add(fr);
                _context.SaveChanges();
            }
        }
        public ActionResult CancelReservation(int Id)
        {
            FlightReservation fr   = db.FlightReservations.Include("Flight").SingleOrDefault(x => x.ID == Id);
            Flight            f    = db.Flights.Find(fr.Flight.ID);
            ApplicationUser   user = db.Users.Find(User.Identity.GetUserId());

            user.Credit += float.Parse(fr.ReservationPrice.ToString());

            switch (fr.FlightClass)
            {
            case "FirstClass":
                f.FrstSeatsCount += fr.Seats;
                break;

            case "EconomyClass":
                f.EcoSeatsCount += fr.Seats;
                break;

            default:
                f.EcoSeatsCount += fr.Seats;
                break;
            }


            db.FlightReservations.Remove(fr);
            db.SaveChanges();

            return(RedirectToAction("MyFlights", "Flight"));
        }
Beispiel #5
0
        public async Task <IActionResult> PutFlightReservation(int id, FlightReservation flightReservation)
        {
            if (id != flightReservation.ReservationID)
            {
                return(BadRequest());
            }

            _context.Entry(flightReservation).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FlightReservationExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public void MakeReservation_ForSameOrigin_And_Destination_Thows_Exception_Test()
        {
            //arrange
            IAdventureTravel   at  = new AdventureTravel();
            IFlightReservation res = new FlightReservation();

            res.PricePerTicket  = 300m;
            res.FeesPerTicket   = 39m;
            res.ClientName      = "Maurice Muoneke";
            res.Destination     = "Austin, Texas";
            res.Origin          = "Austin, Texas";
            res.IsFrequentFlier = false;
            res.NumberInParty   = 1;
            res.ReservationId   = Guid.NewGuid();
            res.DepartureDate   = DateTime.Parse("12/28/2013");
            res.ReturnDate      = DateTime.Parse("01/21/2014");
            res.Passengers      = new List <Passenger> {
                new Passenger {
                    FirstName = "Maurice", LastName = "Muoneke", Gender = Gender.Male, Nationality = "United States"
                }
            };

            //act
            var     actual = 339m;
            decimal expected;

            //assert
            expected = at.CalculateTotalReservationCost(res);
        }
        public async Task <IActionResult> CancelFlight(int id)
        {
            try
            {
                FlightReservation res = await context.FlightReservations.FindAsync(id);

                Flight flight = await context.Flights.FindAsync(res.FlightId);

                FlightSeat seat = await context.FlightSeats.FindAsync(res.SeatId);

                TimeSpan timeSpan = flight.TakeOff - DateTime.Now;

                if (timeSpan.TotalHours >= 3)
                {
                    seat.Reserved = false;

                    context.FlightSeats.Update(seat);
                    await context.SaveChangesAsync();

                    context.FlightReservations.Remove(res);
                    await context.SaveChangesAsync();
                }
                else
                {
                    return(BadRequest());
                }


                return(Ok());
            }catch (Exception e)
            {
                return(BadRequest());
            }
        }
        public async Task <IActionResult> PostAvioRate(long id, [FromBody] AvioFlightRatingDTO model)
        {
            if (ModelState.IsValid)
            {
                FlightReservation flightReser = await _reservationService.GetFlightReservationById(id);

                Flight flight = await _flightService.GetFlight(flightReser.FlightId);

                RegularUser user = await _userService.GetCurrentUser();

                AvioCompanyRating acRate = new AvioCompanyRating();
                acRate.AvioCompanyId       = flight.AvioCompanyId;
                acRate.FlightReservationId = id;
                acRate.UserId = user.Id;
                acRate.Rate   = model.ratingAvioCompany;

                FlightRating flightRate = new FlightRating();
                flightRate.FlightId            = flight.FlightId;
                flightRate.FlightReservationId = id;
                flightRate.Rate   = model.ratingFlight;
                flightRate.UserId = user.Id;

                await _userService.AddAvioRating(acRate);

                await _userService.AddFlightRating(flightRate);

                return(Ok(200));
            }
            return(BadRequest());
        }
        public async Task <IActionResult> DeleteCarReservationWithFlight(int id)
        {
            try
            {
                FlightReservation fRes = await context.FlightReservations.FindAsync(id);

                Flight flight = await context.Flights.FindAsync(fRes.FlightId);

                ReservationCar cRes = await context.ReservationCar.SingleOrDefaultAsync(x => x.IdUser == fRes.UserId && x.Day1 == flight.TakeOff);

                if (cRes != null)
                {
                    context.ReservationCar.Remove(cRes);
                    await context.SaveChangesAsync();
                }
                else
                {
                    return(Ok());
                }

                return(Ok());
            }catch (Exception e)
            {
                return(NoContent());
            }
        }
        public void CalculateTotalReservationCost_Returns_TotalPrice_Test()
        {
            //arrange
            IAdventureTravel   at  = new AdventureTravel();
            IFlightReservation res = new FlightReservation();

            res.PricePerTicket  = 300m;
            res.FeesPerTicket   = 39m;
            res.ClientName      = "Maurice Muoneke";
            res.Destination     = "Paris, France";
            res.Origin          = "Austin, Texas";
            res.IsFrequentFlier = false;
            res.NumberInParty   = 1;
            res.ReservationId   = Guid.NewGuid();
            res.DepartureDate   = DateTime.Parse("12/28/2013");
            res.ReturnDate      = DateTime.Parse("01/21/2014");
            res.Passengers      = new List <Passenger> {
                new Passenger {
                    FirstName = "Maurice", LastName = "Muoneke", Gender = Gender.Male, Nationality = "United States"
                }
            };

            //act
            var actual   = 339m;
            var expected = at.CalculateTotalReservationCost(res);

            //assert
            Assert.AreEqual(expected, actual, "Expected and actual flight reservation costs plus fees");
        }
Beispiel #11
0
        private bool ValidateModel(FlightReservation flightReservation, bool isPost)
        {
            if (flightReservation.ocenaLeta < 0 && isPost == true)
            {
                return(false);
            }
            if (flightReservation.ocenaKompanije < 0 && isPost == true)
            {
                return(false);
            }
            if (flightReservation.flightId < 1)
            {
                return(false);
            }
            if (flightReservation.UserIdForPOST == null || flightReservation.UserIdForPOST == "")
            {
                return(false);
            }
            if (flightReservation.price <= 0)
            {
                return(false);
            }
            if (flightReservation.seatNumeration <= 0)
            {
                return(false);
            }

            return(true);
        }
        public static void book(HotelReservation hotel, FlightReservation flight)
        {
            Reservation reservation = new Reservation();
            reservation.Flight = flight;
            reservation.Hotel = hotel;

            MessageQueue queue = new MessageQueue(Reservation.QUEUE_PATH);
            queue.Send(reservation);
        }
        public ActionResult Ticket(int Id)
        {
            FlightReservation fr = db.FlightReservations.Include("Flight")
                                   .Include("Flight.SourceCity")
                                   .Include("Flight.DestinationCity")
                                   .Include("Customer")
                                   .SingleOrDefault(x => x.ID == Id);

            return(View(fr));
        }
Beispiel #14
0
        public async Task <IdentityResult> SendTicketConfirmationMail(Person user, FlightReservation reservation)
        {
            await Task.Yield();

            var fromMail           = new MailAddress("*****@*****.**");
            var frontEmailPassowrd = "bojan.pisic.123";

            var    toMail = new MailAddress(user.Email);
            string subject;
            string body;

            subject = "Your trip is successfull created.";
            body    = "<br/><br/>Your trip is created. Check your flights on your profile.<br/><br/>Reservation details:";
            foreach (var item in reservation.Tickets)
            {
                body += "<br/><t/>Ticket:" +
                        "<br/><t/><t/>Flight number: " + item.Seat.Flight.FlightNumber +
                        "<br/><t/><t/>From: " + item.Seat.Flight.From +
                        "<br/><t/><t/>To: " + item.Seat.Flight.To +
                        "<br/><t/><t/>Departure: " + item.Seat.Flight.TakeOffDateTime +
                        "<br/><t/><t/>Arrival: " + item.Seat.Flight.LandingDateTime +
                        "<br/><t/><t/>Travel time: " + item.Seat.Flight.TripTime +
                        "<br/><t/><t/>Travel length: " + item.Seat.Flight.tripLength + "km" +
                        "<br/><t/><t/>Seat details: " +
                        "<br/><t/><t/><t/>Seat number: " + item.Seat.Row + item.Seat.Column +
                        "<br/><t/><t/><t/>Class: " + item.Seat.Class +
                        "<br/><t/><t/>Ticket price: " + item.Price + "$";
            }

            body += "</br></br>Total price: " + reservation.Price +
                    "<br/><t/><t/>"
                    + "<br/><br/> SkyRoads";

            var smtp = new SmtpClient
            {
                Host                  = "smtp.gmail.com",
                Port                  = 587,
                EnableSsl             = true,
                DeliveryMethod        = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Credentials           = new NetworkCredential(fromMail.Address, frontEmailPassowrd)
            };

            using (var message = new MailMessage(fromMail, toMail)
            {
                Subject = subject,
                Body = body,
                IsBodyHtml = true
            })
                smtp.Send(message);

            return(IdentityResult.Success);
        }
Beispiel #15
0
        public async Task UpdateFlightReservation(FlightReservation r)
        {
            if (r.Name != null && r.Name != "" &&
                r.Surname != null && r.Surname != "" &&
                r.Passport != null && r.Passport != "" &&
                r.SeatNumber != -1)
            {
                r.Finished = true;
            }

            await _repository.UpdateFlightReservation(r);
        }
        public static FlightReservationBuilder Start()
        {
            _reservation = new FlightReservation()
            {
                InputDate  = DateTime.Now,
                OutputDate = DateTime.Now.AddDays(10),
                Flight     = FlightBuilder.Start().Build(),
                FlightReservationCustomers = new List <Customer>()
            };

            return(new FlightReservationBuilder());
        }
Beispiel #17
0
        public async Task <IActionResult> UpdateFlightReservation(FlightReservation flightReservation)
        {
            var flightReservationRet = await flightReservationRepo.UpdateFlightReservation(_context, flightReservation);

            if (flightReservationRet == null)
            {
                return(NotFound());
            }
            return(Ok());
            //Flight flight = await _context.Flights.Where(x => x.deleted == false)
            //        .Include(ocene => ocene.ocene)
            //        .FirstOrDefaultAsync(id => id.id == flightReservation.flightId);
            //if (flight == null) return BadRequest();
            //if (flightReservation.ocenaLeta > 0)
            //{
            //    DoubleForICollection doubleForICollection = new DoubleForICollection();
            //    doubleForICollection.DoubleValue = flightReservation.ocenaLeta;
            //    flight.ocene.Add(doubleForICollection);
            //    _context.Entry(flight).State = EntityState.Modified;
            //}

            //if (flightReservation.ocenaKompanije > 0)
            //{
            //    FlightCompany flightCompany = await _context.FlightCompanies.Where(x => x.deleted == false)
            //        .Include(ocene => ocene.ocene)
            //        .FirstOrDefaultAsync(id => id.id == flight.idCompany);
            //    if (flightCompany == null) return BadRequest();
            //    DoubleForICollection doubleForICollection = new DoubleForICollection();
            //    doubleForICollection.DoubleValue = flightReservation.ocenaKompanije;
            //    flightCompany.ocene.Add(doubleForICollection);
            //    _context.Entry(flightCompany).State = EntityState.Modified;
            //}

            //_context.Entry(flightReservation).State = EntityState.Modified;

            //try
            //{
            //    await _context.SaveChangesAsync();
            //}
            //catch (DbUpdateConcurrencyException)
            //{
            //    if (!FlightReservationExists(flightReservation.id))
            //    {
            //        return NotFound();
            //    }
            //    else
            //    {
            //        throw;
            //    }
            //}

            //return Ok();
        }
        public FlightReservation theCustomer_reservation(int reservationId)
        {
            FlightReservation myFlight = db.FlightReservations
                                         .Include("Flight")
                                         .Include("Flight.SourceCity")
                                         .Include("Flight.DestinationCity")
                                         .Include("Customer")
                                         .Where(x => x.ID == reservationId &&
                                                x.Flight.Date > DateTime.Now)
                                         .SingleOrDefault();

            return(myFlight == null ? null : myFlight);
        }
Beispiel #19
0
        private void button1_Click(object sender, EventArgs e)
        {
            HotelReservation hotelRes = new HotelReservation();
            hotelRes.DepartureDate = DateTime.Now;
            hotelRes.ArrivalDate = DateTime.Now;
            hotelRes.HotelId = 1;

            FlightReservation flightRes = new FlightReservation();
            flightRes.DepartureDate = DateTime.Now;
            flightRes.ArrivalDate = DateTime.Now;
            flightRes.FlightId = 1;
            ReservationService.book(hotelRes, flightRes);
        }
        public static void SendInvitationEmail(FlightReservation flight)
        {
            MailMessage mail       = new MailMessage();
            SmtpClient  SmtpServer = new SmtpClient("smtp.gmail.com");

            mail.From = new MailAddress("*****@*****.**");
            mail.To.Add(flight.User.Email);
            mail.Subject = "You have been invited by " + flight.Invited_By.Name + "to an a f*****g mazing flight to somewhere idk";
            mail.Body    = "Loads of info here.";

            SmtpServer.Port        = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential("*****@*****.**", "web2projekat2020");
            SmtpServer.EnableSsl   = true;

            SmtpServer.Send(mail);
        }
        public static void SendReservationEmail(FlightReservation flight)
        {
            MailMessage mail       = new MailMessage();
            SmtpClient  SmtpServer = new SmtpClient("smtp.gmail.com");

            mail.From = new MailAddress("*****@*****.**");
            mail.To.Add(flight.User.Email);
            mail.Subject = "You have reserved a seat ";
            mail.Body    = "Loads of info here.";

            SmtpServer.Port        = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential("*****@*****.**", "web2projekat2020");
            SmtpServer.EnableSsl   = true;

            SmtpServer.Send(mail);
        }
        public async Task <IActionResult> AcceptFlightInvitation(string id)
        {
            try
            {
                FlightReservation res = await context.FlightReservations.SingleOrDefaultAsync(x => x.UserId == id && x.Accepted == false);

                res.Accepted = true;

                context.FlightReservations.Update(res);
                await context.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception e)
            {
                return(NoContent());
            }
        }
Beispiel #23
0
        public async Task <IActionResult> FlightReservationStepOne([FromBody] FlightStepOne model)
        {
            if (ModelState.IsValid)
            {
                var user = await UserService.GetCurrentUser();

                if (user != null)
                {
                    var company = await AvioService.GetCompany(model.Flight.AvioCompanyId);

                    List <PriceListItem> priceListItems = new List <PriceListItem>();
                    foreach (PriceListItem p in company.PriceList)
                    {
                        var selected = model.SelectedPriceListItems.SingleOrDefault(s => s.Id == p.PriceListIdemId && s.Selected);
                        if (selected != null)
                        {
                            priceListItems.Add(new PriceListItem()
                            {
                                Name  = p.Name,
                                Price = p.Price,
                            });
                        }
                    }

                    var reservation = new FlightReservation()
                    {
                        FlightId       = model.Flight.FlightId,
                        Canceled       = false,
                        Finished       = false,
                        Invitation     = false,
                        UserId         = user.Id,
                        PriceListItems = priceListItems,
                        SeatNumber     = -1,
                    };

                    user.ReservedFlights.Add(reservation);
                    await UserService.UpdateUser(user);

                    return(Ok(new { reservation }));
                }
            }

            return(BadRequest("Not enough data provided."));
        }
Beispiel #24
0
        public static void AddReview(ReviewForm form)
        {
            using (var _context = new DiemServiceDB())
            {
                string            caller = ((ClaimsPrincipal)HttpContext.Current.User).FindFirst("username").Value;
                User              found  = _context.UserDbSet.Where(u => u.Username == caller).FirstOrDefault();
                FlightReservation wanted = _context.FlightReservationDbSet.Where(u => u.Id == form.ReservationId).Include(u => u.User).Include(u => u.Flight).Include(u => u.Review).FirstOrDefault();
                if (wanted == null || wanted.Flight.Flight_Departure_Time.Date > DateTime.Today)
                {
                    throw new Exception("");
                }
                if (wanted.User.Username != caller)
                {
                    throw new Exception("");
                }

                wanted.Review = _context.ReviewDbSet.Add(new Review(found, form.Rating, form.Comment));
                _context.SaveChanges();
            }
        }
        public void Deveria_adicioanar_um_voo_no_contexto()
        {
            //Arrange
            FlightReservation flightReservation = FlightReservationBuilder.Start().Build();

            flightReservation.SetId();

            foreach (var customer in flightReservation.FlightReservationCustomers)
            {
                customer.SetId();
            }

            //Action
            var flightReservationAdd = _repository.Add(flightReservation);

            //Assert
            var expectedFlight = Context.FlightReservation.Find(flightReservationAdd.Result.Id);

            expectedFlight.Should().NotBeNull();
        }
Beispiel #26
0
        public async Task <ActionResult <FlightReservation> > PostFlightReservation(FlightReservation flightReservation)
        {
            var flight = _context.FlightInfo2.FirstOrDefault(f => f.FlightID == flightReservation.ReservedFlight.FlightID);
            var seat   = _context.Seat.FirstOrDefault(f => f.Id == flightReservation.ReservedSeat.Id);
            var user   = _context.UserDetails.FirstOrDefault(f => f.UserId == flightReservation.ReservedUser.UserId);

            flightReservation.ReservedFlight = flight;
            flightReservation.ReservedSeat   = seat;
            flightReservation.ReservedUser   = user;

            _context.FlightReservation.Add(flightReservation);
            await _context.SaveChangesAsync();

            const string subject = "Reservation";
            var          body    = $"<p>For:{flightReservation.ReservedUser.Email}</p><p> Uspesno ste rezervisai let</a>";

            await email.SendMailAsync(flightReservation.ReservedUser.Email, subject, body);

            return(CreatedAtAction("GetFlightReservation", new { id = flightReservation.ReservationID }, flightReservation));
        }
        public void CalculateTotalReservationFees_Returns_TotalFees_Test()
        {
            //arrange
            IAdventureTravel   at  = new AdventureTravel();
            IFlightReservation res = new FlightReservation();

            res.PricePerTicket  = 688.43m;
            res.FeesPerTicket   = 108.23m;
            res.ClientName      = "Maurice Muoneke";
            res.Destination     = "Paris, France";
            res.IsFrequentFlier = false;
            res.NumberInParty   = 5;
            res.ReservationId   = Guid.NewGuid();
            res.DepartureDate   = DateTime.Parse("06/12/2016");
            res.ReturnDate      = DateTime.Parse("06/21/2016");
            res.Passengers      = new List <Passenger>
            {
                new Passenger {
                    FirstName = "Maurice", LastName = "Muoneke", Gender = Gender.Male, Nationality = "United States", DateOfBirth = DateTime.Parse("01/31/1954")
                },
                new Passenger {
                    FirstName = "Ada", LastName = "Muoneke", Gender = Gender.Female, Nationality = "United States", DateOfBirth = DateTime.Parse("03/07/1965")
                },
                new Passenger {
                    FirstName = "Evonne", LastName = "Muoneke", Gender = Gender.Female, Nationality = "United States", DateOfBirth = DateTime.Parse("09/30/1987")
                },
                new Passenger {
                    FirstName = "Bryan", LastName = "Muoneke", Gender = Gender.Male, Nationality = "United States", DateOfBirth = DateTime.Parse("12/03/1988")
                },
                new Passenger {
                    FirstName = "Michelle", LastName = "Muoneke", Gender = Gender.Female, Nationality = "United States", DateOfBirth = DateTime.Parse("11/02/1995")
                }
            };

            //act
            var actual   = 541.15m;
            var expected = at.CalculateTotalReservationFees(res);

            //assert
            Assert.AreEqual(expected, actual, "Expected and actual flight reservation fees");
        }
        public async Task Deveria_excluir_reserva_de_voo_com_sucesso()
        {
            int expected = 1;

            FlightReservation reservation = FlightReservationBuilder.Start()
                                            .WithInputDate(DateTime.Now.AddDays(11))
                                            .Build();

            _fakeRepository.Setup(x => x.GetById(It.IsAny <int>())).ReturnsAsync(reservation);

            var cmd = new FlightReservationDeleteCommand()
            {
                FlightReservationId = 1
            };

            var result = await _handler.Handle(cmd, It.IsAny <CancellationToken>());

            result.Should().BeTrue();
            _fakeRepository.Verify(x => x.GetById(cmd.FlightReservationId), Times.Once);
            _fakeRepository.Verify(x => x.DeleteById(cmd.FlightReservationId), Times.Once);
        }
Beispiel #29
0
 public static void InviteUser(ReservationForm form)
 {
     using (var _context = new DiemServiceDB())
     {
         string caller     = ((ClaimsPrincipal)HttpContext.Current.User).FindFirst("username").Value;
         User   instigator = _context.UserDbSet.Where(u => u.Username == caller).FirstOrDefault();
         User   invited    = _context.UserDbSet.Where(u => u.Username == form.InvitedUsername).FirstOrDefault();
         Flight wanted     = _context.FlightDbSet.Where(u => u.Id == form.FlightId).FirstOrDefault();
         if (invited.Role != Role.RegisteredUser || invited == null)
         {
             return;
         }
         FlightReservation fr = _context.FlightReservationDbSet.Add(new FlightReservation(invited.Name, invited.LastName, form.Seat, invited, wanted)
         {
             Invited_By = instigator
         });
         _context.RegisteredUserDbSet.Where(u => u.Id == invited.UlogaID).First().FlightReservations.Add(fr);
         MailServiceManager.SendInvitationEmail(fr);
         _context.SaveChanges();
     }
 }
Beispiel #30
0
 public static void AddRandomFlightReservation(ReservationForm form)
 {
     using (var _context = new DiemServiceDB())
     {
         if (form == null || String.IsNullOrEmpty(form.Name) || String.IsNullOrEmpty(form.LastName) || form.Passport == 0 || form.Seat == 0)
         {
             throw new Exception("BAD");
         }
         Flight        wanted = _context.FlightDbSet.Where(u => u.Id == form.FlightId).FirstOrDefault();
         StringBuilder sb     = new StringBuilder(wanted.Seats);
         if (sb[form.Seat] == '1')
         {
             throw new Exception("ALREADY TAKEN");
         }
         sb[form.Seat] = '1';
         wanted.Seats  = sb.ToString();
         FlightReservation fr = _context.FlightReservationDbSet.Add(new FlightReservation(form.Name, form.LastName, form.Seat, form.Passport, wanted));
         wanted.Reservations.Add(fr);
         _context.SaveChanges();
     }
 }
Beispiel #31
0
 public static void CancelFlightReservation(int flightid)
 {
     using (var _context = new DiemServiceDB())
     {
         string            caller   = ((ClaimsPrincipal)HttpContext.Current.User).FindFirst("username").Value;
         User              found    = _context.UserDbSet.Where(u => u.Username == caller).FirstOrDefault();
         FlightReservation toCancel = _context.FlightReservationDbSet.Where(u => u.Id == flightid).Include(u => u.User).Include(u => u.Flight).FirstOrDefault();
         if (toCancel == null || toCancel.User.Username != caller)
         {
             throw new Exception("NOT AUTHORIZED");
         }
         if (DateTime.Now.Date - toCancel.Flight.Flight_Departure_Time.Date < TimeSpan.FromDays(3))
         {
             throw new Exception("TOO LATE TO CANCEL");
         }
         toCancel.Cancelled = true;
         StringBuilder sb = new StringBuilder(toCancel.Flight.Seats);
         sb[toCancel.Seat_Reserved] = '0';
         _context.SaveChanges();
     }
 }
Beispiel #32
0
 public static void AcceptReservation(int reservation_id)
 {
     using (var _context = new DiemServiceDB())
     {
         string            caller = ((ClaimsPrincipal)HttpContext.Current.User).FindFirst("username").Value;
         User              chased = _context.UserDbSet.Where(u => u.Username == caller).FirstOrDefault();
         FlightReservation wanted = _context.FlightReservationDbSet.Where(u => u.Id == reservation_id).Include(x => x.Flight).Include(x => x.User).Include(x => x.Invited_By).FirstOrDefault();
         if (wanted == null || wanted.User.Username != caller)
         {
             throw new Exception("BAD QUERY");
         }
         StringBuilder sb = new StringBuilder(wanted.Flight.Seats);
         if (sb[wanted.Seat_Reserved] == '1')
         {
             throw new Exception("ALREADY TAKEN OR BAD");
         }
         sb[wanted.Seat_Reserved] = '1';
         wanted.Flight.Seats      = sb.ToString();
         wanted.Invited_By        = null;
         _context.SaveChanges();
     }
 }