public static void SendEMailInvite(AppUser inviter, AppUser user, TOFlightReservation flightReservation, VehicleForEmail vehicle, int id) { MailAddress to = new MailAddress(user.Email, user.Name); MailAddress from = new MailAddress("*****@*****.**", "Careoplane"); MailMessage message = new MailMessage(from, to); message.Subject = "Careoplane - Invitation"; var link = string.Format("http://*****:*****@gmail.com", "Careoplane!1"), EnableSsl = true }; try { client.Send(message); } catch (SmtpException ex) { Console.WriteLine(ex.ToString()); throw ex; } }
public static void SendEMailReceipt(AppUser user, TOFlightReservation flightReservation, VehicleForEmail vehicle) { MailAddress to = new MailAddress(user.Email, user.Name); MailAddress from = new MailAddress("*****@*****.**", "Careoplane"); MailMessage message = new MailMessage(from, to); message.Subject = "Careoplane - Receipt"; string text = string.Format("Hello {0},\n\n\tRecently you have made a reservation on our website. Below are your reservation details:\n\t", user.Name); foreach (TOFlightReservationDetail tOFlightReservationDetail in flightReservation.FlightReservationDetails) { text += string.Format("\tFlight ({4}): from {0} ({1}) to {2} ({3})\n\t", tOFlightReservationDetail.Flight.Origin, tOFlightReservationDetail.Flight.Departure.ToString(), tOFlightReservationDetail.Flight.Destination, tOFlightReservationDetail.Flight.Arrival.ToString(), tOFlightReservationDetail.Flight.AirlineName); } if (vehicle != null) { text += string.Format("\tVehicle ({1}): {0}\n\n", vehicle.Brand, vehicle.RentACarName); } text += string.Format("Final price: €{0}\n\n\t", flightReservation.FinalPrice); text += "Hope you have an enjoyable trip.\n\tAll the best,\n\tCareoplane"; message.Body = text; SmtpClient client = new SmtpClient("smtp.gmail.com", 587) { Credentials = new NetworkCredential("*****@*****.**", "Careoplane!1"), EnableSsl = true }; try { client.Send(message); } catch (SmtpException ex) { Console.WriteLine(ex.ToString()); throw ex; } }
public async Task <ActionResult <FlightReservation> > PostFlightReservation(TOFlightReservation flightReservation, int points) { TOFlight tempFlight = new TOFlight(); string userId = User.Claims.First(c => c.Type == "UserID").Value; string username = User.Claims.First(c => c.Type == "Username").Value; Common.Models.AppUser inviter = null; using (HttpClient client = new HttpClient()) { var httpRequest = new HttpRequestMessage(HttpMethod.Get, "http://usermicroservice/api/AppUsers/GetUser/" + username); HttpResponseMessage message = await client.SendAsync(httpRequest); var temp = await message.Content.ReadAsStringAsync(); inviter = JsonSerializer.Deserialize <Common.Models.AppUser>(temp); } Common.Models.VehicleForEmail vehicle = null; if (flightReservation.VehicleReservationId != 0) { using (HttpClient client = new HttpClient()) { var httpRequest = new HttpRequestMessage(HttpMethod.Get, "http://rentacarmicroservice/api/VehicleReservations/Vehicle/" + flightReservation.VehicleReservationId); HttpResponseMessage message = await client.SendAsync(httpRequest); var temp = await message.Content.ReadAsStringAsync(); vehicle = JsonSerializer.Deserialize <Common.Models.VehicleForEmail>(temp); } } FlightReservation tempFlightReservation = new FlightReservation() { ReservationId = 0, TimeOfCreation = DateTime.Now, Creator = ((Common.Models.AppUser)inviter).UserName, VehicleReservationId = flightReservation.VehicleReservationId, FinalPrice = flightReservation.FinalPrice }; flightReservation.FlightReservationDetails.ForEach(flightReservation => { ((Common.Models.AppUser)inviter).NumberOfPoint += (int)Math.Round(flightReservation.Flight.Distance); }); ((Common.Models.AppUser)inviter).NumberOfPoint -= points; using (var client = new HttpClient()) { Common.Models.PointsClass p = new Common.Models.PointsClass { Id = inviter.Id, Points = inviter.NumberOfPoint }; client.BaseAddress = new Uri("http://usermicroservice/"); await client.PutAsJsonAsync("api/AppUsers/UpdatePoints", p); } _context.FlightReservations.Add(tempFlightReservation); await _context.SaveChangesAsync(); foreach (TOFlightReservationDetail tOFlightReservationDetail in flightReservation.FlightReservationDetails) { tempFlight = tOFlightReservationDetail.Flight; FlightReservationDetail flightReservationDetail = new FlightReservationDetail() { FlightId = tOFlightReservationDetail.Flight.FlightId, FlightReservation = tempFlightReservation, FlightReservationDetailId = 0, AirlineName = tOFlightReservationDetail.Flight.AirlineName }; _context.Entry(flightReservationDetail).State = EntityState.Added; await _context.SaveChangesAsync(); foreach (TOPassengerSeat tOPassengerSeat in tOFlightReservationDetail.PassengerSeats) { PassengerSeat passengerSeat = new PassengerSeat() { SeatId = tOPassengerSeat.Seat.SeatId, Surname = tOPassengerSeat.Surname, PassengerSeatId = 0, Name = tOPassengerSeat.Name, Passport = tOPassengerSeat.Passport, Username = tOPassengerSeat.Username, FlightReservationDetail = flightReservationDetail, AirlineScored = false, FlightScored = false, }; if (passengerSeat.Username == "" || passengerSeat.Username == ((Common.Models.AppUser)inviter).UserName) { passengerSeat.Accepted = true; } else { passengerSeat.Accepted = false; } _context.Entry(passengerSeat).State = EntityState.Added; if (passengerSeat.Username != null && passengerSeat.Username != "" && passengerSeat.Username != ((Common.Models.AppUser)inviter).UserName) { Common.Models.AppUser user = null; using (HttpClient client = new HttpClient()) { var httpRequest = new HttpRequestMessage(HttpMethod.Get, "http://usermicroservice/api/AppUsers/GetUser/" + passengerSeat.Username); HttpResponseMessage message = await client.SendAsync(httpRequest); var temp = await message.Content.ReadAsStringAsync(); user = JsonSerializer.Deserialize <Common.Models.AppUser>(temp); } MailingService.SendEMailInvite(((Common.Models.AppUser)inviter), (Common.Models.AppUser)user, flightReservation, vehicle, tempFlightReservation.ReservationId); } Seat seat = await _context.Seats.FindAsync(passengerSeat.SeatId); seat.Occupied = true; _context.Entry(seat).State = EntityState.Modified; await _context.SaveChangesAsync(); } await _context.SaveChangesAsync(); } MailingService.SendEMailReceipt(((Common.Models.AppUser)inviter), flightReservation, vehicle); return(Ok()); }
public async Task <ActionResult <FlightReservation> > PostFlightReservation(TOFlightReservation flightReservation, int points) { TOFlight tempFlight = new TOFlight(); string userId = User.Claims.First(c => c.Type == "UserID").Value; var inviter = await _userManager.FindByIdAsync(userId); VehicleReservation vehicleReservation = null; Vehicle vehicle = null; if (flightReservation.VehicleReservationId != 0) { vehicleReservation = await _context.VehicleReservation.FindAsync(flightReservation.VehicleReservationId); vehicle = await _context.Vehicles.Include(vehicle => vehicle.RentACar).FirstOrDefaultAsync(vehicle => vehicle.VehicleId == vehicleReservation.VehicleId); } FlightReservation tempFlightReservation = new FlightReservation() { ReservationId = 0, TimeOfCreation = DateTime.Now, Creator = inviter.UserName, VehicleReservationId = flightReservation.VehicleReservationId, FinalPrice = flightReservation.FinalPrice }; flightReservation.FlightReservationDetails.ForEach(flightReservation => { inviter.NumberOfPoint += (int)Math.Round(flightReservation.Flight.Distance); }); inviter.NumberOfPoint -= points; await _userManager.UpdateAsync(inviter); _context.FlightReservations.Add(tempFlightReservation); await _context.SaveChangesAsync(); foreach (TOFlightReservationDetail tOFlightReservationDetail in flightReservation.FlightReservationDetails) { tempFlight = tOFlightReservationDetail.Flight; FlightReservationDetail flightReservationDetail = new FlightReservationDetail() { FlightId = tOFlightReservationDetail.Flight.FlightId, FlightReservation = tempFlightReservation, FlightReservationDetailId = 0, AirlineName = tOFlightReservationDetail.Flight.AirlineName }; _context.Entry(flightReservationDetail).State = EntityState.Added; await _context.SaveChangesAsync(); foreach (TOPassengerSeat tOPassengerSeat in tOFlightReservationDetail.PassengerSeats) { PassengerSeat passengerSeat = new PassengerSeat() { SeatId = tOPassengerSeat.Seat.SeatId, Surname = tOPassengerSeat.Surname, PassengerSeatId = 0, Name = tOPassengerSeat.Name, Passport = tOPassengerSeat.Passport, Username = tOPassengerSeat.Username, FlightReservationDetail = flightReservationDetail, AirlineScored = false, FlightScored = false, }; if (passengerSeat.Username == "" || passengerSeat.Username == inviter.UserName) { passengerSeat.Accepted = true; } else { passengerSeat.Accepted = false; } _context.Entry(passengerSeat).State = EntityState.Added; if (passengerSeat.Username != null && passengerSeat.Username != "" && passengerSeat.Username != inviter.UserName) { var user = await _userManager.FindByNameAsync(passengerSeat.Username); flightReservation.FlightReservationDetails.ForEach(flightReservation => { user.NumberOfPoint += (int)Math.Round(flightReservation.Flight.Distance); }); await _userManager.UpdateAsync(user); MailingService.SendEMailInvite(inviter, user, flightReservation, vehicle, tempFlightReservation.ReservationId); } Seat seat = await _context.Seats.FindAsync(passengerSeat.SeatId); seat.Occupied = true; _context.Entry(seat).State = EntityState.Modified; await _context.SaveChangesAsync(); } await _context.SaveChangesAsync(); } MailingService.SendEMailReceipt(inviter, flightReservation, vehicle); return(Ok()); }