private void SendMail(int requestSysNo) { //获取收件人 List <string> EmailsTo = VirtualRequestCommonDA.GetUserMailByVirtualRequest(requestSysNo, CompanyCode); if (EmailsTo.Count == 0) { WriteLog("没有邮件接收人!"); return; } else { foreach (string mailAddress in EmailsTo) { MailTo += ";" + mailAddress; } MailTo = MailTo.Remove(0, 1); } //获取虚库申请单中的商品信息作为邮件Body ProductVirtualInfoEntity productInfo = VirtualRequestCommonDA.GetProductInfoByVirtualRequestSysNo(requestSysNo, CompanyCode); Subject = "虚库申请单结束失败 " + productInfo.ProductID + productInfo.ProductName; StringBuilder sb = new StringBuilder(); sb.AppendLine(string.Format("商品名称:{0}", productInfo.ProductName)); sb.AppendLine(string.Format("商品SysNo:{0}", productInfo.ProductSysNo)); sb.AppendLine(string.Format("商品ID:{0}", productInfo.ProductID)); sb.AppendLine(string.Format("商品链接:http:{0}", productInfo.ProductLink)); sb.AppendLine(string.Format("商品链接:http:{0}", productInfo.ProductLink)); sb.AppendLine(string.Format("设定虚库数量:{0}", productInfo.VirtualQty)); sb.AppendLine(string.Format("生效虚库数量:{0}", productInfo.HoldVirtualQty)); sb.AppendLine(string.Format("开始时间:{0}", productInfo.StartTime)); sb.AppendLine(string.Format("结束时间:{0}", productInfo.EndTime)); sb.AppendLine(string.Format("状态:{0}", productInfo.StatusDescription)); MailBody = sb.ToString(); //Email_InternalInfoEntity mail = new Email_InternalInfoEntity(); MailInfo mail = new MailInfo(); mail.FromName = MailFrom; mail.ToName = MailTo; mail.CCName = CCMailAddress; mail.BCCName = BCMailAddress; mail.Subject = Subject; mail.Body = MailBody; MailAdapter.Send(mail); }
private void SendMail(int requestSysNo) { //获取收件人 List <string> EmailsTo = VirtualRequestCommonDA.GetUserMailByVirtualRequest(requestSysNo, CompanyCode); if (EmailsTo.Count == 0) { WriteLog("没有邮件接收人!"); return; } else { MailTo = ""; foreach (string mailAddress in EmailsTo) { MailTo += ";" + mailAddress; } MailTo = MailTo.Remove(0, 1); } //获取虚库申请单中的商品信息作为邮件Body ProductVirtualInfoEntity productInfo = VirtualRequestCommonDA.GetProductInfoByVirtualRequestSysNo(requestSysNo, CompanyCode); Subject = string.Format("<p style='font-size:10.5pt;color:red'>虚库申请单结束失败 {0} {1}</p>", productInfo.ProductID, productInfo.ProductName); StringBuilder sb = new StringBuilder(); sb.AppendLine(string.Format("<p style='font-size:10.5pt;font-family:宋体;color:blue'>商品名称:{0}</p>", productInfo.ProductName)); sb.AppendLine(string.Format("<p style='font-size:10.5pt;font-family:宋体;color:blue'>商品SysNo:{0}</p>", productInfo.ProductSysNo)); sb.AppendLine(string.Format("<p style='font-size:10.5pt;font-family:宋体;color:blue'>商品ID:{0}</p>", productInfo.ProductID)); sb.AppendLine(string.Format("<p style='font-size:10.5pt;font-family:宋体;color:blue'>商品链接:<a href='http://www.newegg.com.cn/Products/ProductDetail.aspx?sysno={0}'>http://www.newegg.com.cn/Products/ProductDetail.aspx?sysno={0}<a/></p>", productInfo.ProductSysNo)); sb.AppendLine(string.Format("<p style='font-size:10.5pt;font-family:宋体;color:blue'>设定虚库数量:{0}</p>", productInfo.VirtualQty)); sb.AppendLine(string.Format("<p style='font-size:10.5pt;font-family:宋体;color:blue'>生效虚库数量:{0}</p>", productInfo.HoldVirtualQty)); sb.AppendLine(string.Format("<p style='font-size:10.5pt;font-family:宋体;color:blue'>开始时间:{0}</p>", productInfo.StartTime)); sb.AppendLine(string.Format("<p style='font-size:10.5pt;font-family:宋体;color:blue'>结束时间:{0}</p>", productInfo.EndTime)); sb.AppendLine(string.Format("<p style='font-size:10.5pt;font-family:宋体;color:blue'>状态:{0}</p>", productInfo.StatusDescription)); MailBody = sb.ToString(); //Email_InternalInfoEntity mail = new Email_InternalInfoEntity(); MailInfo mail = new MailInfo(); mail.FromName = MailFrom; mail.ToName = MailTo; mail.CCName = CCMailAddress; mail.BCCName = BCMailAddress; mail.Subject = Subject; mail.Body = MailBody; MailAdapter.Send(mail); }
public async Task <IActionResult> DeleteConfirmed(int id) { var ticketList = _context.Tickets.Where(x => x.Seats.Count > 0) .Where(a => a.PurchaseId == id).ToList(); int sizeoftickets = ticketList.Count(); for (int i = 0; i < sizeoftickets; i++) { Ticket t = ticketList.ElementAt(i); var seatList = _context.Seats .Where(a => a.TicketId == t.Id).ToList(); Seat seat = seatList.ElementAt(0); seat.TicketId = null; seat.Availability = true; seat.ReservationId = null; seat.IsConfirmed = false; _context.Update(seat); await _context.SaveChangesAsync(); } var purchase = await _context.Purchases.FindAsync(id); String msg; String userId = _userManager.GetUserId(HttpContext.User); MailAdapter mailAdapter = new MailAdapter(); msg = "Your ticket is deleted. Here are the refund details \n "; msg = msg + "Flight: " + purchase.Tickets.ToList()[0].Flight.Name + "\n" + "Fllght NO : " + purchase.Tickets.ToList()[0].Flight.FlightNo + " \n "; msg = msg + "Ticket(s) refunded by refund money of: " + "\n" + purchase.Price * (purchase.Tickets.ToList()[0].Flight.RefundPortion / 100f) + "\n" + "Refunded price will be in your account in 3 to 5 work days.\n\n"; String to = _context.Users.Where(a => a.Id == userId).Select(a => a.Email).FirstOrDefault().ToString(); mailAdapter.SendMail(_userManager.GetUserId(HttpContext.User), msg, to); _context.Purchases.Remove(purchase); await _context.SaveChangesAsync(); if (User.IsInRole("CompAdmin") && User.IsInRole("WebAdmin")) { return(RedirectToAction(nameof(Index))); } else { return(RedirectToAction("Search", "Flights")); } }
public ContactUsService(MailAdapter mailAdapter) { this.mailAdapter = mailAdapter; }
public IActionResult Purchase(int pId, InputModel inputModel) { string OwnerId = _userManager.GetUserId(HttpContext.User); var usercard = _context.CreditCards.Where(x => x.OwnerId == OwnerId).ToList(); var cardlist = new SelectList(usercard, "Id", "CardNumber"); ViewData["CardId"] = cardlist; ViewData["Creditcards"] = "Select a card."; var purchase = _context.Purchases.FirstOrDefault(x => x.Id == pId); if (purchase == null) { return(NotFound()); } var ticket = purchase.Tickets.FirstOrDefault(x => x.OwnerId == OwnerId); purchase.IsProcessed = true; _context.Purchases.Update(purchase); _context.SaveChanges(); //------------------------------------Send Mail Start------------------------------------------// String msg; MailAdapter mailAdapter = new MailAdapter(); msg = "Thank you for your ticket purchase. Here are the details \n "; msg = msg + "Flight No : " + ticket.Flight.FlightNo + " \n "; msg = msg + "Flight: " + ticket.Flight.Name + "\n" + "Ticket: " + ticket.Id + "\n" + "Price: " + purchase.Price + " TL" + "\n" + "Seat: "; //var flt = _context.Flights.Where(a => a.FlightNo.Equals(ticket.Flight.FlightNo)).FirstOrDefault(); //var tic = _context.Tickets.Where(a => a.EventId.Equals(flt.Id) && a.OwnerId.Equals(OwnerId)).ToList(); /* * foreach(var t in tic) * { * var seat = _context.Seats.Where(a => a.FlightId.Equals(flt.FlightNo) && a.TicketId.Equals(t.Id)).FirstOrDefault(); * * msg = msg + "Flight: " + ticket.Flight.Name + "\n" + "Ticket: " + "\n" + t.Id + "\n" + "Seat: " + seat.Col + seat.Row + "\n\n"; * }*/ var ticket1 = purchase.Tickets.Where(x => x.OwnerId == OwnerId).ToList(); foreach (var item in ticket1) { //var seat = _context.Seats.Where(a => a.FlightId.Equals(flt.FlightNo) && a.TicketId.Equals(t.Id)).FirstOrDefault(); msg = msg + item.Seats.ToArray()[0].Col + item.Seats.ToArray()[0].Row + " "; //msg = msg + item.Seats.Col + item.Seats.Row + "\n\n" ; } String to = _context.Users.Where(a => a.Id == OwnerId).Select(a => a.Email).FirstOrDefault().ToString(); mailAdapter.SendMail(_userManager.GetUserId(HttpContext.User), msg, to); //------------------------------------Send Mail End------------------------------------------// return(RedirectToAction(nameof(Successful))); }
public async Task <IActionResult> Buy(int id, int countOfBaby, InputModel inputModel) { var flight = await _context.Flights .Include(x => x.Organizer) .FirstOrDefaultAsync(m => m.Id == inputModel.flightInfo.Id); var seats = _context.Seats .Include(x => x.OfferType) .Where(x => x.FlightId == flight.Id) .OrderBy(x => x.Row).ToList(); var selectedOffers = flight.Offers.Select(x => x.Offer).ToList(); List <Seat> selectedSeats = seats.Where(x => x.TypeId == inputModel.ticketClass && x.Availability && !(inputModel.seats[x.Col - 1][x.Row.ToCharArray()[0] - seats[0].Row.ToCharArray()[0]].Availability)).ToList(); ViewData["Err"] = ""; ViewData["Err"] = "There isn't any seat left in choosen class"; if (flight == null) { return(NotFound()); } if (selectedSeats == null) { return(View(flight)); } else if (selectedSeats.Count() < inputModel.numOfAdult + inputModel.numOfChild) { ViewData["Err"] = "There isn't enough seats for you to buy. Your seat may be taken."; return(View(flight)); }/* * else if (countOfBaby > inputModel.numOfAdult) * { * ViewData["Err"] = "Infants cannot be more than adults"; * return View(flight); * }*/ else { Purchase purchase; if (inputModel.PId == default) { purchase = new Purchase() { IsProcessed = false, OwnerId = _userManager.GetUserId(HttpContext.User), Price = 0, ProcessTime = DateTime.Now }; purchase.Tickets = new List <Ticket>(); purchase.Price = 0; } else { purchase = _context.Purchases.Find(inputModel.PId); } purchase.Price += _context.Offers.FirstOrDefault(x => x.Type == inputModel.ticketClass).Price *(inputModel.numOfChild + inputModel.numOfAdult); String msg; String userId = _userManager.GetUserId(HttpContext.User); MailAdapter mailAdapter = new MailAdapter(); msg = "Thank you for your ticket purchase. Here are the details < br /> "; msg = msg + "Flight: " + flight.Name + "<br />" + "Fllght NO : " + inputModel.flightInfo.FlightNo + " < br /> "; int counter = 0; while (counter < inputModel.numOfAdult + inputModel.numOfChild) { Ticket tic = new Ticket(); tic.ProcessTime = DateTime.Now; tic.EventId = inputModel.flightInfo.Id; tic.OwnerId = _userManager.GetUserId(HttpContext.User); tic.CheckIn = false; tic.isChild = counter < inputModel.numOfAdult ? false : true; _context.Add(tic); await _context.SaveChangesAsync(); foreach (var item in inputModel.offers) { if (!tic.isChild && item.quantity > 0) { OfferTicket tmp = new OfferTicket() { Offer = selectedOffers.Find(x => x.Id == item.offer.Id), Ticket = tic }; _context.OfferTickets.Add(tmp); if (_context.SaveChanges() > 0) { purchase.Price += tmp.Offer.Price; item.quantity--; } } else if (tic.isChild && item.childQuantity > 0) { OfferTicket tmp = new OfferTicket() { Offer = selectedOffers.Find(x => x.Id == item.offer.Id), Ticket = tic }; _context.OfferTickets.Add(tmp); if (_context.SaveChanges() > 0) { purchase.Price += tmp.Offer.ChildPrice; item.childQuantity--; } } } Seat seat = selectedSeats.ElementAt(counter); seat.TicketId = (int)tic.Id; seat.Availability = false; var tmp2 = _context.Seats.Update(seat); try { await _context.SaveChangesAsync(); } catch (Exception ex) { Debug.WriteLine(ex.Message); throw; } counter++; purchase.Tickets.Add(tic); msg = msg + "Ticket: " + "<br />" + tic.Id + "<br />" + "Seat: " + seat.Col + seat.Row + "< br /><br />"; } if (inputModel.PId == default) { _context.Purchases.Add(purchase); } else { _context.Purchases.Update(purchase); } _context.SaveChanges(); String to = _context.Users.Where(a => a.Id == userId).Select(a => a.Email).FirstOrDefault().ToString(); //mailAdapter.SendMail(_userManager.GetUserId(HttpContext.User), msg, to); if (inputModel.returnDate <= DateTime.Now) { AutoCancelManager.AutoCancelManagerStatic.DeleteOverTime(purchase.Id, _context); return(RedirectToAction("Purchase", new { id = purchase.Id })); } else { return(RedirectToAction("SearchAsPage", new { arr = flight.Route.DepartureAirport.AirportName, dest = flight.Route.ArrivalAirport.AirportName, date = inputModel.returnDate, numOfAdult = inputModel.numOfAdult, numOfChild = inputModel.numOfChild, ticketClass = inputModel.ticketClass, pId = purchase.Id })); } } }