示例#1
0
        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);
        }
示例#2
0
        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 }));
                }
            }
        }