public ActionResult Create(PromotionalFareModel model)
        {
            PromotionalFareSetupProvider promotionalFareSetupProvider = new PromotionalFareSetupProvider();
            PromotionalFareModel         viewModel = new PromotionalFareModel();
            GeneralProvider generalProvider        = new GeneralProvider();

            try
            {
                foreach (var item in model.PromotionalFareSector.PromotionalFareSegment)
                {
                    item.FromCityList = generalProvider.GetAirlineCityList();;
                    item.ToCityList   = generalProvider.GetAirlineCityList();;
                }
                viewModel = promotionalFareSetupProvider.GetPromotionalFareSetupCreateModel();
                viewModel.PromotionalFareSector.Taxes = model.PromotionalFareSector.Taxes;
                viewModel.PromotionalFareSector.PromotionalFareSegment = model.PromotionalFareSector.PromotionalFareSegment;

                promotionalFareSetupProvider.SavePromotionalFare(model);
                TempData["SuccessMessage"] = "Saved Successfully.";
                return(View(viewModel));
            }
            catch (Exception ex)
            {
                TempData["ActionResponse"] = ex.Message;
                return(View(viewModel));
            }
        }
        public ActionResult ViewETicket(string id, ETicketViewModel model1)
        {
            long PNRid = Int64.Parse(id);

            var ts = (TravelSession)Session["TravelPortalSessionInfo"];

            int agentid = ticketprovider.GetAgentIdbyPNRId(PNRid);

            ETicketViewModel viewmodel = ticketprovider.GetAllInformationForeTicket(PNRid, agentid);

            viewmodel.PNRSectorList          = ticketprovider.DeterminePNRSectorCount(PNRid);
            viewmodel.PassengerList          = ticketprovider.GetPassengerListByPNRID(PNRid, agentid);
            viewmodel.PNRSegmentList         = ticketprovider.GetPNRSegmentListByPNRSectorID(PNRid);
            viewmodel.ShowFareOnETicket      = ticketprovider.ShowFareOnETicket(agentid);
            viewmodel.ShowAgentLogoOnETicket = ticketprovider.ShowAgentLogoOnETicket(agentid);
            viewmodel.AirlineVendorLocators  = ticketprovider.GetAirlineVendorLocatorsById(PNRid);

            viewmodel.OperatingAirline = ticketprovider.GetAirlineCodeByMasterPnrId(PNRid);

            string serverPath = Server.MapPath("~") + "Content\\AgentLogo";
            string resolved   = Path.Combine(serverPath, viewmodel.AgentLogo);

            if (!System.IO.File.Exists(resolved))
            {
                string directoryName = Path.GetDirectoryName(resolved);
                resolved            = Path.Combine(directoryName, "DefaultLogo.png");
                viewmodel.AgentLogo = "DefaultLogo.png";
                if (!System.IO.File.Exists(resolved))
                {
                    // Images.DefaultLogo.Save(resolved);
                }
            }
            if (!ModelState.IsValid)
            {
                return(View("eTicket", viewmodel));
            }
            string body = RenderPartialViewToString("ETicket", viewmodel);

            try
            {
                GeneralProvider provider      = new GeneralProvider();
                TravelSession   travelSession = (TravelSession)Session["TravelPortalSessionInfo"];
                Agents          agent         = provider.GetAgentById(viewmodel.AgentId);
                EmailEngine.EmailSender.Send(body, agent.Email, model1.txtEmailTo);

                ViewData["isEmailSent"] = "Your email is right on the way, you'll get email in a minute.";
            }
            catch (Exception ex)
            {
                ATLTravelPortal.Utility.ErrorLogging.LogException(ex);
                ViewData["isEmailSent"] = "Unable to send email";
            }
            return(View("eTicket", viewmodel));
        }
        public ActionResult Create(PromotionalFareModel model)
        {
            PromotionalFareProvider promotionalFareProvider = new PromotionalFareProvider();
            PromotionalFareModel    viewModel       = new PromotionalFareModel();
            GeneralProvider         generalProvider = new GeneralProvider();
            TravelSession           obj             = (TravelSession)Session["TravelPortalSessionInfo"];

            try
            {
                model.PromotionalFareSector.CreatedBy = obj.AppUserId;
                promotionalFareProvider.Save(model);
                model = promotionalFareProvider.GetPromotionalFareCreateModel();
                TempData["SuccessMessage"] = "Record Saved Successfully!";
                return(RedirectToAction("Index"));
            }

            catch
            {
                TempData["ActionResponse"] = "Unsuccessful to Save";
                model = promotionalFareProvider.GetPromotionalFareCreateModel();
                return(View(model));
            }
        }
        public ActionResult Details(OfflineBookViewModel model, FormCollection fs)
        {
            if (model.PNRBookedList[0].ServiceProviderId != Convert.ToInt32(fs["PreviousServiceProviderId"]))
            {
                //var mpnrResult = _entity.TBO_MasterPNRs.Where(x => x.MPNRId == mpnrId).FirstOrDefault();
                //if (model.PNRBookedList[0].TicketStatusId == 33 && model.PNRBookedList[0].ServiceProviderId == 5)
                //{
                //    mpnrResult.TicketStatusId = 24;
                //}

                //if (model.PNRBookedList[0].TicketStatusId == 34 && model.PNRBookedList[0].ServiceProviderId == 5)
                //{
                //    mpnrResult.TicketStatusId = 28;
                //}

                //_entity.ApplyCurrentValues(mpnrResult.EntityKey.EntitySetName, mpnrResult);
                //_entity.SaveChanges();

                bookProvider.UpdateMasterPnrTicketStatusID(model);

                bookProvider.UpdateMasterPnrServiceProviderId(model.PNRBookedList[0].ServiceProviderId, model.PNRBookedList[0].MPNRId);
            }

            GeneralProvider generalProvider = new GeneralProvider();
            decimal         totalFare       = 0;

            //foreach (var fare in model.PNRBookedList[0].PNRDetails[0].PassengerDetail[0].FareDetails)
            //{
            //    totalFare = Convert.ToDecimal(fare.BaseFare + fare.SellingTax - fare.DiscountAmount);
            //}

            totalFare = bookProvider.GetTotalFareByMPNRID(model.PNRBookedList[0].MPNRId);

            string currency = bookProvider.GetCurrencyByMPNRID(model.PNRBookedList[0].MPNRId);

            model.AvailableBalance = generalProvider.GetAccountInfoByAgentId(model.PNRBookedList[0].UserDetail.AgentId);


            bool IsSufficientBalance = (bool)generalProvider.Air_isSufficientBalance
                                       (
                totalFare,
                model.PNRBookedList[0].UserDetail.AgentId,
                (int)Enum.Parse(typeof(Galileo.FareService.CurrencyType), currency),
                model.PNRBookedList[0].ServiceProviderId
                                       );


            try
            {
                if (fs.AllKeys.Contains("Issue"))
                {
                    var ts = (TravelSession)Session["TravelPortalSessionInfo"];
                    if (model.PNRBookedList[0].ServiceProviderId == 3)
                    {
                        if (!IsSufficientBalance)
                        {
                            TempData["ActionResponse"] = "Insufficient Balance";
                            return(RedirectToAction("Details", new { id = model.PNRBookedList[0].MPNRId }));
                        }

                        string recloc = bookProvider.GetRecLoc(model.PNRBookedList[0].MPNRId);
                        if (string.IsNullOrEmpty(recloc))
                        {
                            var result = bookProvider.Edit(model);
                            bookProvider.IssueTicket(model.PNRBookedList[0].MPNRId, ts.AppUserId);
                            bookProvider.Air_UpdateTicketStatusId(model.PNRBookedList[0].MPNRId, "ISSUEPNR", false, ts.AppUserId);
                        }
                        else
                        {
                            bookProvider.Abacus_IssueTicket(model.PNRBookedList[0].MPNRId, ts.AppUserId);
                        }
                        TempData["SuccessMessage"] = "PNR is successfully issued.";
                    }
                    else if (model.PNRBookedList[0].ServiceProviderId == 4)
                    {
                        if (!IsSufficientBalance)
                        {
                            TempData["ActionResponse"] = "Insufficient Balance";
                            return(RedirectToAction("Details", new { id = model.PNRBookedList[0].MPNRId }));
                        }

                        string recloc = bookProvider.GetRecLoc(model.PNRBookedList[0].MPNRId);
                        if (string.IsNullOrEmpty(recloc))
                        {
                            var result = bookProvider.Edit(model);
                            bookProvider.IssueTicket(model.PNRBookedList[0].MPNRId, ts.AppUserId);
                            bookProvider.Air_UpdateTicketStatusId(model.PNRBookedList[0].MPNRId, "ISSUEPNR", false, ts.AppUserId);
                        }
                        else
                        {
                            bookProvider.Buddha_IssueTicket(model.PNRBookedList[0].MPNRId, ts.AppUserId);
                        }
                        TempData["SuccessMessage"] = "PNR is successfully issued.";
                    }
                    else if (model.PNRBookedList[0].TicketStatusId == 28)
                    {
                        try
                        {
                            var result = bookProvider.Edit(model);

                            bookProvider.IssueTicket(model.PNRBookedList[0].MPNRId, ts.AppUserId);
                            bookProvider.Air_UpdateTicketStatusId(model.PNRBookedList[0].MPNRId, "ISSUEPNR", false, ts.AppUserId);
                            TempData["SuccessMessage"] = "PNR is successfully issued.";
                        }
                        catch
                        {
                            TempData["ActionResponse"] = "Ticket already issued.";
                        }
                    }
                    else if (model.PNRBookedList[0].ServiceProviderId == 1)
                    {
                        if (!IsSufficientBalance)
                        {
                            TempData["ActionResponse"] = "Insufficient Balance";
                            return(RedirectToAction("Details", new { id = model.PNRBookedList[0].MPNRId }));
                        }

                        string recloc = bookProvider.GetRecLoc(model.PNRBookedList[0].MPNRId);
                        if (string.IsNullOrEmpty(recloc))
                        {
                            var result = bookProvider.Edit(model);
                            bookProvider.IssueTicket(model.PNRBookedList[0].MPNRId, ts.AppUserId);
                            bookProvider.Air_UpdateTicketStatusId(model.PNRBookedList[0].MPNRId, "ISSUEPNR", false, ts.AppUserId);
                        }
                        else
                        {
                            bookProvider.Galileo_IssueTicket(model.PNRBookedList[0].MPNRId, ts.AppUserId);
                        }
                        TempData["SuccessMessage"] = "PNR is successfully issued.";
                    }
                    else
                    {
                        try
                        {
                            if (!IsSufficientBalance)
                            {
                                TempData["ActionResponse"] = "Insufficient Balance";
                                return(RedirectToAction("Details", new { id = model.PNRBookedList[0].MPNRId }));
                            }
                            var result = bookProvider.Edit(model);
                            bookProvider.IssueTicket(model.PNRBookedList[0].MPNRId, ts.AppUserId);
                            bookProvider.Air_UpdateTicketStatusId(model.PNRBookedList[0].MPNRId, "ISSUEPNR", false, ts.AppUserId);
                            TempData["SuccessMessage"] = "PNR is successfully issued.";
                        }
                        catch
                        {
                            TempData["ActionResponse"] = "Ticket already issued.";
                        }
                    }
                }
                else if (fs.AllKeys.Contains("Save"))
                {
                    var ts = (TravelSession)Session["TravelPortalSessionInfo"];
                    model.UpdatedBy = ts.AppUserId;
                    model.MPNRId    = model.PNRBookedList[0].MPNRId;

                    HttpPostedFileBase eTicketFile = model.ticket;
                    if (model.ticket != null)
                    {
                        if (eTicketFile.ContentType == "application/zip" || eTicketFile.ContentType == "application/x-zip-compressed")
                        {
                            var result = bookProvider.Edit(model);
                            TempData["SuccessMessage"] = "PNR is successfully saved.";
                        }
                    }
                    else if (model.ticket == null)
                    {
                        var result = bookProvider.Edit(model);
                        TempData["SuccessMessage"] = "PNR is successfully saved.";
                    }
                }
                else if (model.isDeleted)
                {
                    var sessionDetail = (TravelSession)Session["TravelPortalSessionInfo"];
                    var models        = bookProvider.GetBookedPNRList(model.PNRBookedList[0].MPNRId);
                    model.ServiceProviderId = models.PNRBookedList[0].ServiceProviderId;
                    bool checkId = bookProvider.CheckMPNRIdExist(model.PNRBookedList[0].MPNRId);

                    if (checkId == true)
                    {
                        bookProvider.Delete(model.PNRBookedList[0].MPNRId, sessionDetail.AppUserId, model.ServiceProviderId);
                    }

                    TempData["SuccessMessage"] = "PNR is successfully cancelled.";
                }
            }
            catch (GDS.GDSException ex)
            {
                System.Text.StringBuilder errorBuilder = new System.Text.StringBuilder();
                foreach (GDS.GdsErrorData errors in ex.GDSErrors)
                {
                    errorBuilder.Append(errors.ErrorMessage);
                    errorBuilder.Append(errors.ErrText);
                }
                TempData["ActionResponse"] = errorBuilder;
                ATLTravelPortal.Utility.ErrorLogging.BookingLogException(ex, model.PNRBookedList[0].MPNRId);
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    TempData["ActionResponse"] = ex.InnerException.Message;
                }
                ATLTravelPortal.Utility.ErrorLogging.BookingLogException(ex, model.PNRBookedList[0].MPNRId);
            }
            return(RedirectToAction("Details", new { id = model.PNRBookedList[0].MPNRId }));
        }
        public ActionResult Create(OfflineBookViewModel model, FormCollection coll)
        {
            var     sessionDetail = (TravelSession)Session["TravelPortalSessionInfo"];
            decimal totalFare     = 0;
            List <OfflineBookFareDetailModel> fareDetailsList = new List <OfflineBookFareDetailModel>();

            foreach (var fare in model.PNRDetails[0].PassengerDetail)
            {
                totalFare += Convert.ToDecimal(fare.FareDetail.SellingBaseFare); //+ fare.FareDetail.SellingTax - fare.FareDetail.DiscountAmount
            }


            GeneralProvider generalProvider = new GeneralProvider();

            bool IsSufficientBalance = (bool)generalProvider.Air_isSufficientBalance
                                       (
                totalFare,
                int.Parse(coll["UserDetail.AgentId"]),
                (int)Enum.Parse(typeof(Galileo.FareService.CurrencyType), model.PNRDetails[0].PassengerDetail[0].FareDetail.Currency),
                int.Parse(model.PNRDetails[0].BookingSource)
                                       );

            bool chkGDSPNR = bookProvider.CheckDuplicateGDSPNR(model.PNRDetails[0].PNR.ToUpper());

            try
            {
                model.UserDetail.AppUserId = sessionDetail.AppUserId;
                model.UserDetail.SessionId = sessionDetail.Id;

                HttpPostedFileBase eTicketFile = model.ticket;
                if (model.ticket != null && chkGDSPNR == true)
                {
                    if (eTicketFile.ContentType == "application/zip" || eTicketFile.ContentType == "application/x-zip-compressed")
                    {
                        if (!IsSufficientBalance)
                        {
                            TempData["ActionResponse"] = "Insufficient Balance";
                            return(View(model));
                        }

                        var response = bookProvider.Save(model, (double)totalFare);
                        return(RedirectToAction("Index"));
                    }
                }
                else if (model.ticket == null && chkGDSPNR == true)
                {
                    if (!IsSufficientBalance)
                    {
                        TempData["ActionResponse"] = "Insufficient Balance";
                        return(View(model));
                    }
                    var response = bookProvider.Save(model, (double)totalFare);
                    if (response == true)
                    {
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        return(View("Create", model));
                    }
                }
                else
                {
                    TempData["ActionResponse"] = "Uploaded file should have .zip extension";
                }
                return(RedirectToAction("Index"));
            }
            catch (Exception e)
            {
                throw new Exception("Sorry, Error Occurred While Booking!", e);
            }
        }