public string sendNotification_RejectStandby(List <TravelRequestMasterModels> sodRequestsList, List <FlightDetailModels> sodflightList, List <PassengerDetailModels> passengerList, List <PassengerMealAllocationModels> passengerMealsList, List <TravelRequestHotelDetailModels> hotelDetailList, string s, string pnrc) { var bookingType = sodRequestsList[0].SodBookingTypeId == 1 ? "SOD" : "NON-SOD"; if (sodRequestsList[0].IsAmountPaidByTraveller.Equals(true)) { var strHoldPNR = string.Empty; //Get PNR Booking Time var pnrInfo = _userRepository.GetPNRAmountAndTime(sodRequestsList[0].TravelRequestId); var holdAmount = float.Parse(pnrInfo.Split('|')[1]); var holdAmounts = string.Format("{0:0.00}", holdAmount).ToString(); var pnrGenerationTime = Convert.ToDateTime(pnrInfo.Split('|')[2]); //Get Hold Time var holdDateTime = CommonWebMethod.CommonWebMethods.GetHoldBookingDateTime(sodRequestsList[0].SodBookingTypeId, sodRequestsList[0].BookingFor, sodflightList[0].TravelDate, sodflightList[0].DepartureTime, pnrGenerationTime); var HoldTime = holdDateTime.ToString("t"); var HoldDate = holdDateTime.ToString("dd/MMM/yyyy"); var strholdDT = HoldTime + " dated " + HoldDate; strHoldPNR = strHoldPNR.Replace("[holdDT]", strholdDT); strHoldPNR = strHoldPNR.Replace("[pnrAmt]", holdAmounts); pnrc = pnrc + "." + strHoldPNR; } var emailSubject = bookingType + " " + "Standby Booking PNR Request Notification :" + System.DateTime.Now.ToString(); var emailTemplateName = "SodBookingRequestNotificationTemplateFor_HOD_Booking.html"; var emailCredentials = EmailCredentials(emailSubject, emailTemplateName, sodRequestsList, sodflightList, passengerList, passengerMealsList, hotelDetailList, s, pnrc); emailCredentials.TemplateFilePath = emailCredentials.TemplateFilePath.Replace("[PNR]", pnrc); EmailNotifications.SendBookingRequestNotificationTo_Requester(emailCredentials, sodRequestsList[0].EmailId); return("sucess"); }
/// <summary> /// Send Email Notification to user :Rejection /// </summary> /// <returns></returns> public string sendRejectionNotification() { var jmsg = string.Empty; if (TempData["emailData"] != null && TempData["emailId"] != null) { var emaildata = TempData["emailData"] as EmailNotificationModel; var emailid = TempData["emailId"].ToString(); EmailNotifications.SendBookingRequestNotificationTo_Requester(emaildata, emailid); jmsg = "Rejected"; } return(jmsg); }
/// <summary> /// Send Email To User /// </summary> /// <param name="list"></param> /// <param name="reqName"></param> /// <param name="reqEmailId"></param> /// <param name="hodName"></param> /// <param name="appStatus"></param> private void SendEmailToUser(List <VendorModels> list, string reqName, string reqEmailId, string hodName, string appStatus) { var subject = "NON SOD Vendor Booking Response Notification :" + System.DateTime.Now.ToString("dd/MMM/yyyy hh:mm:ss tt"); var VendorResponseTemplateName = "VendorResponseEmailTemplate.html"; var emailCredentials = EmailCredentials(subject, VendorResponseTemplateName, list); var requesttemplateData = emailCredentials.TemplateFilePath; requesttemplateData = requesttemplateData.Replace("[RequesterName]", reqName); requesttemplateData = requesttemplateData.Replace("[hodname]", hodName); requesttemplateData = requesttemplateData.Replace("[AppStatus]", appStatus); emailCredentials.TemplateFilePath = requesttemplateData; EmailNotifications.SendBookingRequestNotificationTo_Requester(emailCredentials, reqEmailId); }
public JsonResult sendmailtoHOD(List <ITHResponseDetailModels> ithlist) { var dicList = new Dictionary <string, object>(); var plist = new List <OALPassengerModel>(); var mlist = new List <OALTravelRequestMasterModel>(); dicList = _oalRepository.GetOATDetailsData("OAT-" + ithlist[0].TravelRequestId.ToString()); plist = dicList["pasgList"] as List <OALPassengerModel>; mlist = dicList["masterList"] as List <OALTravelRequestMasterModel>; string hodEmailId = SOD.Services.ADO.SodCommonServices.GetHodEmailDetails(mlist[0].RequestedEmpId.ToString().Trim(), 2); var status = _oalRepository.saveHODStatus(ithlist[0].TravelRequestId, "Pending"); if (status > 0) { //send mail to hod- pasg details, ith details with radio button var emailSubject = "OAT Request Notification from Travel Desk:" + System.DateTime.Now.ToString("dd-MMM-yyyy hh:mm:ss tt"); var emailTemplateName = "OatRequestNotificationTemplateHodApproval_ITH.html"; var emailCredentials = EmailCredentialsHODApproval(emailSubject, emailTemplateName, ithlist, plist); var skey = new StringBuilder(); skey.Append(mlist[0].TravelRequestId.ToString() + ","); skey.Append(hodEmailId); var uri1 = ""; var uri2 = ""; uri1 = ConfigurationManager.AppSettings["emailApprovalPathHod_ITH"].Trim() + "?str=" + skey + "&type=a&trid=" + mlist[0].TravelRequestId; //uri2 = ConfigurationManager.AppSettings["emailRejectionPathHod_ITH"].Trim() + "?str=" + skey + "&type=r&trid=" + mlist[0].TravelRequestId; var appLink = string.Empty; appLink = "<table><tr style='font-family:Arial;'><td style='width:110px; height:25px; background-color:#04B431;text-align:center;border-radius:5px'><a style='color:#fff; text-decoration:none;' href='" + uri1 + "'>Select Option</a></td></tr></table>"; //appLink = appLink + "<td style='width:110px; height:25px; background-color:#b33;text-align:center;border-radius:5px'><a style='color:#fff; text-decoration:none;' href='" + uri2 + "'>Rejection</a> </td></tr></table>"; var templateData = emailCredentials.TemplateFilePath; var hodName = hodEmailId.Split(',')[1]; templateData = templateData.Replace("[appLink]", appLink); templateData = templateData.Replace("[hodname]", hodName); emailCredentials.TemplateFilePath = templateData; TempData["emailData_Hod"] = emailCredentials; TempData["emailId_Hod"] = hodEmailId.Split(',')[0]; EmailNotifications.SendBookingRequestNotificationTo_Requester(emailCredentials, hodEmailId.Split(',')[0].ToString()); TempData["msgResponse"] = "OAT Response Notification : Flight details have been sent successfully to Travel desk."; } return(Json("sent", JsonRequestBehavior.AllowGet)); }
/// <summary> /// Send Email to User as well as HOD /// </summary> public void sendEmailNotification() { if (TempData["emailData"] != null && TempData["emailId"] != null) { var emaildata = TempData["emailData"] as EmailNotificationModel; var emailid = TempData["emailId"].ToString(); EmailNotifications.SendBookingRequestNotificationTo_Requester(emaildata, emailid); } if (TempData["emailData_HR"] != null && TempData["emailId_HR"] != null) { var emaildataHod = TempData["emailData_HR"] as EmailNotificationModel; var emailidHod = TempData["emailId_HR"].ToString(); EmailNotifications.SendBookingRequestNotificationTo_HOD(emaildataHod, emailidHod); } }
//[System.Web.Http.HttpGet] //[Route("api/FileApi/GetListToFinancialApproval")] //public IHttpActionResult GetListToFinancialApproval() //{ // //var controller = DependencyResolver.Current.GetService<trnsController>(); // //try // //{ // // var list = _userRepository.GetListTosendTriggerFinancalApproval(); // // foreach (var lst in list) // // { // // controller.ResendApproverRequest(lst.TravelRequestId.ToString(), lst.HotelRequestId.ToString(), "SOD"); // // } // // return Json( "success"); // //} // //catch (Exception ex) // //{ // // throw ex; // //} // return Json("success"); //} /// <summary> /// Send Email Notification to booking requester/user /// </summary> /// <returns></returns> private void sendEmailNotification(object emailData, string emailId, object emailData_Hod, string emailId_Hod) { try { if (emailData != null && emailId != null) { var emaildata = emailData as EmailNotificationModel; var emailid = emailId; EmailNotifications.SendBookingRequestNotificationTo_Requester(emaildata, emailid); } if (emailData_Hod != null && emailId_Hod != null) { var emaildataHod = emailData_Hod as EmailNotificationModel; var emailidHod = emailId_Hod; EmailNotifications.SendBookingRequestNotificationTo_HOD(emaildataHod, emailidHod); } } catch (Exception ex) { var json = ex.InnerException; } }
/// <summary> /// Send Email Notification to booking requester/user /// </summary> /// <returns></returns> public void sendEmailNotification() { try { if (TempData["emailData"] != null && TempData["emailId"] != null) { var emaildata = TempData["emailData"] as EmailNotificationModel; var emailid = TempData["emailId"].ToString(); EmailNotifications.SendBookingRequestNotificationTo_Requester(emaildata, emailid); } if (TempData["emailData_Hod"] != null && TempData["emailId_Hod"] != null) { var emaildataHod = TempData["emailData_Hod"] as EmailNotificationModel; var emailidHod = TempData["emailId_Hod"].ToString(); EmailNotifications.SendBookingRequestNotificationTo_HOD(emaildataHod, emailidHod); } } catch (Exception ex) { TempData["fun3"] = ex.InnerException; } }
public IHttpActionResult Get() { object emailData = new object(); string emailId = string.Empty; var ListToSend = new List <String>(); try { var controller = DependencyResolver.Current.GetService <HotelOnlyController>(); var res = _userRepository.GetReminderListTosendApproval(1); foreach (var lst in res) { var hotelList = new List <TravelRequestHotelDetailModels>(); var dicList = new Dictionary <string, object>(); dicList = _userRepository.GetSodHotelInfo(Convert.ToInt64(lst)); var bookingInfo = dicList["bookingInfolist"] as List <TravelRequestMasterModels>; var hotel_List = dicList["hotelinfolist"] as List <TravelRequestHotelDetailModels>; var flightinfo = dicList["flightInfolist"] as List <FlightDetailModels>; String hodEmailId = _userRepository.GetHODEmailIdByTravelReqID(lst.TravelRequestId.ToString()); var emailSubject2 = "SOD-SJSC Hotel Booking Request Notification :" + System.DateTime.Now.ToString(); var emailTemplateName2 = "SodHotelBookingRequestFor_HodHotelApproval.html"; var emailCredentials2 = controller.EmailCredentialsHotelHod(emailSubject2, emailTemplateName2, hotel_List, bookingInfo, flightinfo, lst.TravelRequestId.ToString(), hodEmailId); // var emailData_hod = emailCredentials2; var templateData = emailCredentials2.TemplateFilePath; var appLink = string.Empty; var approvaltype = string.Empty; var emailId_hod = hodEmailId.Split(',')[0].ToString().Trim(); if (hodEmailId.Length > 0) { var skey = new StringBuilder(); skey.Append(bookingInfo[0].TravelRequestId.ToString() + ","); skey.Append(bookingInfo[0].EmailId.Trim() + ","); skey.Append(bookingInfo[0].SodBookingTypeId.ToString() + ","); skey.Append(bookingInfo[0].BookingFor.Trim() + ","); skey.Append(hodEmailId.ToString().Trim() + ","); skey.Append(0); var uri1 = ConfigurationManager.AppSettings["emailOnlyHotelApprovalPathHod"].Trim() + "?str=" + CipherURL.Encrypt(skey + "&type=a"); var uri2 = ConfigurationManager.AppSettings["emailOnlyHotelApprovalPathHod"].Trim() + "?str=" + CipherURL.Encrypt(skey + "&type=r"); approvaltype = "Please help to accord your Acceptance or Rejection."; appLink = "<table><tr style='font-family:Arial;'><td style='width:110px; height:25px; background-color:#04B431;text-align:center;border-radius:5px'><a name='app' style='color:#fff; text-decoration:none;' href='" + uri1 + "'>Acceptance</a></td> <td> </td> <td style='width:110px; height:25px; background-color:#b33;text-align:center;border-radius:5px'><a name='rej' style='color:#fff; text-decoration:none;' href='" + uri2 + "'>Rejection</a> </td></tr></table>"; templateData = templateData.Replace("[approvaltype]", approvaltype); templateData = templateData.Replace("[appLink]", appLink); templateData = templateData.Replace("[hodName]", hodEmailId.Split(',')[1]); templateData = templateData.Replace("[RequesterName]", bookingInfo[0].Title + " " + bookingInfo[0].RequestedEmpName); emailCredentials2.TemplateFilePath = templateData; //var emaildata2 = emailData_hod as EmailNotificationModel; var emailid2 = emailId_hod.ToString(); EmailNotifications.SendBookingRequestNotificationTo_Requester(emailCredentials2, emailid2); //SendBookingRequestNotificationTo_Requester_Traveldesk } } return(Json("su")); } catch (Exception ex) { return(Json(ex.InnerException.Message.ToString())); throw ex; } return(Json("su")); }
/// <summary> /// Approve Booking Request for HOD /// </summary> /// <param name="travelReqId"></param> /// <returns></returns> public string ApproveOatBookingRequest(string travelReqId) { var jsonmsg = string.Empty; var approvalList = new OatTravelRequestApprovalModel() { TravelRequestId = Convert.ToInt32(travelReqId.Split(',')[0]), //Travel Request ApprovedByEmpId = Convert.ToInt32(travelReqId.Split(',')[1]), //Employee Id of approver ApprovalStatus = 1, IsMandatoryTravel = 0, // Convert.ToInt32(travelReqId.Split(',')[5]), //Is Mandatory Travel ApprovalDate = System.DateTime.Now, Comment = "Approved from HOD", ApprovedByEmpIdCLevel1 = 0, ApprovedByEmpIdCLevel2 = 0, ApprovalStatusCLevel1 = 0, ApprovalStatusCLevel2 = 0, CLevelComment1 = "", CLevelComment2 = "", CLevelAppDate1 = DateTime.Parse("01/01/1900"), CLevelAppDate2 = DateTime.Parse("01/01/1900"), RevenueApprovedStatus = 0, RevenueApprovedDate = DateTime.Parse("01/01/1900") }; //Check Duplicate PNR //var chkpnr = Services.ADO.SodCommonServices.CheckDuplicatePNR(Convert.ToInt64(travelReqId.Split(',')[0]), 1); //if (!chkpnr.Equals("0")) //{ // return "Sorry : PNR has already generated for this booking request. Existing PNR No. :" + chkpnr; //} var s = _oatApproverRepositorty.ApproveOatBookingRequest(approvalList); if (s >= 1) { //Close Booking Request var trRequestMaster = new OALTravelRequestMasterModel() { TravelRequestId = Convert.ToInt64(travelReqId.Split(',')[0]), BookingStatus = "Approved", StatusDate = System.DateTime.Now }; var c = _oatApproverRepositorty.CloseOatBookingRequest_HOD(trRequestMaster); //Get Booking Request Data for Email Notification var sodRequestsList = new List <OALTravelRequestMasterModel>(); var sodflightList = new List <OALModels>(); var sodPassList = new List <OALPassengerModel>(); var sodhotelList = new List <OALHotelModel>(); var dicList = new Dictionary <string, object>(); dicList = _oatApproverRepositorty.GetOatBookingInfoForPNR(Convert.ToInt32(travelReqId.Split(',')[0])); sodRequestsList = dicList["bookingInfo"] as List <OALTravelRequestMasterModel>; sodflightList = dicList["flightInfo"] as List <OALModels>; sodPassList = dicList["passInfo"] as List <OALPassengerModel>; sodhotelList = dicList["hotelInfo"] as List <OALHotelModel>; //sodPassMealsList = dicList["mealsInfo"] as List<PassengerMealAllocationModels>; //Send Approval Email Notification string emailSubject = "OAT Booking Request Approval Notification from HOD :" + System.DateTime.Now.ToString("dd-MMM-yyyy-hh:mm:ss"); var emailTemplateName = "OatBookingRequest_Approval_User.html"; //Send Email Notification Credentials var emailCredentials = EmailCredentials(emailSubject, emailTemplateName, sodRequestsList, sodflightList, sodPassList, sodhotelList, travelReqId); emailCredentials.TemplateFilePath = emailCredentials.TemplateFilePath.Replace("[Team]", "HOD"); EmailNotifications.SendBookingRequestNotificationTo_Requester(emailCredentials, sodRequestsList[0].EmailId.Trim()); jsonmsg = "Approval Alert for Request No. OAT-" + travelReqId.Split(',')[0] + ": \n Approval process has been completed successfully."; } return(s >= 1 ? jsonmsg : string.Empty); }
/// <summary> /// Reject Booking Request /// </summary> /// <param name="travelReqId"></param> /// <returns></returns> public string RejectOatBookingRequest(string travelReqId) { var jsonmsg = string.Empty; //Initialize list for updating revenue status var approvalList = new OatTravelRequestApprovalModel() { TravelRequestId = Convert.ToInt32(travelReqId.Split(',')[0]), ApprovedByEmpId = Convert.ToInt32(travelReqId.Split(',')[1]), ApprovalStatus = 2, ApprovalDate = System.DateTime.Now, Comment = "Rejected from HOD", ApprovedByEmpIdCLevel1 = 0, ApprovedByEmpIdCLevel2 = 0, ApprovalStatusCLevel1 = 0, ApprovalStatusCLevel2 = 0, CLevelComment1 = "", CLevelComment2 = "", CLevelAppDate1 = DateTime.Parse("01/01/1900"), CLevelAppDate2 = DateTime.Parse("01/01/1900"), RevenueApprovedStatus = 0, RevenueApprovedDate = DateTime.Parse("01/01/1900") }; var s = _oatApproverRepositorty.RejectOatBookingRequest(approvalList); if (s >= 1) { //Close Booking Request var trRequestMaster = new OALTravelRequestMasterModel() { TravelRequestId = Convert.ToInt32(travelReqId.Split(',')[0]), BookingStatus = "Rejected by HOD", StatusDate = System.DateTime.Now }; var c = _oatApproverRepositorty.CloseOatBookingRequest_HOD(trRequestMaster); //Get Booking Request Data for Email Notification var sodRequestsList = new List <OALTravelRequestMasterModel>(); var sodflightList = new List <OALModels>(); var sodPassList = new List <OALPassengerModel>(); var sodhotelList = new List <OALHotelModel>(); var dicList = new Dictionary <string, object>(); dicList = _oatApproverRepositorty.GetOatBookingInfoForPNR(Convert.ToInt32(travelReqId.Split(',')[0])); sodRequestsList = dicList["bookingInfo"] as List <OALTravelRequestMasterModel>; sodflightList = dicList["flightInfo"] as List <OALModels>; sodPassList = dicList["passInfo"] as List <OALPassengerModel>; sodhotelList = dicList["hotelInfo"] as List <OALHotelModel>; //sodPassMealsList = dicList["mealsInfo"] as List<PassengerMealAllocationModels>; //string bookingType = sodRequestsList[0].SodBookingTypeId == 1 ? "SOD" : "NON-SOD"; //Send Rejection Email Notification string emailSubject = "OAT Booking Request Rejection Notification from HOD :" + System.DateTime.Now.ToString("dd-MMM-yyyy-hh:mm:ss"); var emailTemplateName = "OatBookingRequest_Rejection_User.html"; //Send Email Notification Credentials var emailCredentials = EmailCredentials(emailSubject, emailTemplateName, sodRequestsList, sodflightList, sodPassList, sodhotelList, travelReqId); emailCredentials.TemplateFilePath = emailCredentials.TemplateFilePath.Replace("[Team]", "HOD"); EmailNotifications.SendBookingRequestNotificationTo_Requester(emailCredentials, sodRequestsList[0].EmailId.Trim()); jsonmsg = "Rejection Alert for Request No. OAT-" + travelReqId.Split(',')[0] + ": \n Rejection process has been completed successfully."; } return(s >= 1 ? jsonmsg : string.Empty); }
/// <summary> /// Submit Hotel Info /// </summary> /// <param name="sodRequestsList"></param> /// <param name="sodflightList"></param> /// <param name="hotelDetailList"></param> /// <returns></returns> public JsonResult SubmitHotelInfo(List <TravelRequestMasterModels> sodRequestsList, List <FlightDetailModels> sodflightList, List <TravelRequestHotelDetailModels> hotelDetailList) { var s = 0; var jsonmsg = string.Empty; var BookingType = string.Empty; string hodEmailId = ""; sodRequestsList[0].IsVendorBooking = false; sodRequestsList[0].IsSJSC = false; //check duplicate hotel data if (sodRequestsList[0].IsHotelRequired == true) { foreach (var i in hotelDetailList) { var empcode = i.EmployeeCode; var checkin = i.CheckInDate; var hotelcity = i.City; var result = _transportRepository.FindDuplicateDataHotel(empcode, checkin, hotelcity); if (result == true) { jsonmsg = "Warning: A similar hotel booking already exists. Kindly cancel the previous hotel booking and try again."; TempData["jsonmsg"] = jsonmsg; return(Json(jsonmsg, JsonRequestBehavior.AllowGet)); } } } GetLoginUserInfo(sodRequestsList[0].RequestedEmpId.ToString()); var empInfo = TempData["EmpInfo"] as List <string>; hodEmailId = _userRepository.GetHODEmailId(empInfo[8]); var r = _userRepository.IsBlanketApproverRole(Convert.ToInt32(empInfo[0])); sodRequestsList[0].SJSCHodEmailId = hodEmailId.Split(',')[0].ToString().Trim(); //Save master Information, flight information, hotel information s = _userRepository.SaveOnlyHotelBookingRequest(sodRequestsList, sodflightList, hotelDetailList); //send mail to approver and user var hotelList = new List <TravelRequestHotelDetailModels>(); var dicList = new Dictionary <string, object>(); dicList = _userRepository.GetSodHotelInfo(Convert.ToInt64(s.ToString())); TempData["bookingInfo"] = dicList["bookingInfolist"] as List <TravelRequestMasterModels>; TempData["hotelList"] = dicList["hotelinfolist"] as List <TravelRequestHotelDetailModels>; TempData["flightinfo"] = dicList["flightInfolist"] as List <FlightDetailModels>; //Send Email Notification if (TempData["hotelList"] != null && TempData["bookingInfo"] != null && TempData["flightinfo"] != null) { var hotel_List = TempData["hotelList"] as List <TravelRequestHotelDetailModels>; var bookingInfo = TempData["bookingInfo"] as List <TravelRequestMasterModels>; var flightinfo = TempData["flightinfo"] as List <FlightDetailModels>; var emailSubject = "SOD Only-Hotel Booking Request Notification :" + System.DateTime.Now.ToString(); var emailTemplateName = "OnlyHotelBookingRequestFor_User.html"; var emailCredentials = EmailCredentialsHotel(emailSubject, emailTemplateName, hotel_List, bookingInfo, flightinfo, s.ToString(), "pending"); TempData["emailData"] = emailCredentials; TempData["emailId"] = bookingInfo[0].EmailId.Trim(); var emaildata = TempData["emailData"] as EmailNotificationModel; var emailid = TempData["emailId"].ToString(); EmailNotifications.SendBookingRequestNotificationTo_Requester(emaildata, emailid); if (bookingInfo[0].RequestedEmpId.ToString() == hodEmailId.Split(',')[2].ToString().Trim() || r == true) { _userRepository.UpdateOnlyHotelApprovalStatus(bookingInfo[0].TravelRequestId); //Redirect to Thank You Page jsonmsg = "SOD Hotel Booking Request ID : " + s.ToString() + " ." + "Booking process has been completed successfully.Your booking request has been sent to Traveldesk for Hotel alignment."; TempData["jsonmsg"] = jsonmsg; return(Json(jsonmsg, JsonRequestBehavior.AllowGet)); } else { var emailSubject2 = "SOD Hotel Booking Request Notification :" + System.DateTime.Now.ToString(); var emailTemplateName2 = "SodHotelBookingRequestFor_HodHotelApproval.html"; var emailCredentials2 = EmailCredentialsHotelHod(emailSubject2, emailTemplateName2, hotel_List, bookingInfo, flightinfo, s.ToString(), hodEmailId); var templateData = emailCredentials2.TemplateFilePath; var appLink = string.Empty; var approvaltype = string.Empty; if (hodEmailId.Length > 0) { var skey = new StringBuilder(); skey.Append(bookingInfo[0].TravelRequestId.ToString() + ","); skey.Append(bookingInfo[0].EmailId.Trim() + ","); skey.Append(bookingInfo[0].SodBookingTypeId.ToString() + ","); skey.Append(bookingInfo[0].BookingFor.Trim() + ","); skey.Append(hodEmailId.Split(',')[2].ToString()); var uri1 = ConfigurationManager.AppSettings["emailOnlyHotelApprovalPathHod"].Trim() + "?str=" + CipherURL.Encrypt(skey + "&type=a"); var uri2 = ConfigurationManager.AppSettings["emailOnlyHotelApprovalPathHod"].Trim() + "?str=" + CipherURL.Encrypt(skey + "&type=r"); approvaltype = "Please help to accord your Acceptance or Rejection."; appLink = "<table><tr style='font-family:Arial;'><td style='width:110px; height:25px; background-color:#04B431;text-align:center;border-radius:5px'><a name='app' style='color:#fff; text-decoration:none;' href='" + uri1 + "'>Acceptance</a></td> <td> </td> <td style='width:110px; height:25px; background-color:#b33;text-align:center;border-radius:5px'><a name='rej' style='color:#fff; text-decoration:none;' href='" + uri2 + "'>Rejection</a> </td></tr></table>"; templateData = templateData.Replace("[approvaltype]", approvaltype); templateData = templateData.Replace("[appLink]", appLink); templateData = templateData.Replace("[hodName]", hodEmailId.Split(',')[1]); templateData = templateData.Replace("[RequesterName]", bookingInfo[0].RequestedEmpName); emailCredentials2.TemplateFilePath = templateData; //EMail EmailNotifications.SendBookingRequestNotificationTo_Requester(emailCredentials2, hodEmailId.Split(',')[0].ToString().Trim()); //SMS Approval SendSMSforApproval(hodEmailId, bookingInfo[0], hotel_List, uri1, uri2); //Redirect to Thank You Page jsonmsg = "SOD Hotel Booking Request ID : " + s.ToString() + " ." + "Booking process has been completed successfully.Your booking request has been sent to your respected approver at " + hodEmailId.Split(',')[0].ToString(); } TempData["jsonmsg"] = jsonmsg; return(Json(jsonmsg, JsonRequestBehavior.AllowGet)); } } else { jsonmsg = "Error: Hotel information cannot be saved. Please try again later."; TempData["jsonmsg"] = jsonmsg; return(Json(jsonmsg, JsonRequestBehavior.AllowGet)); } }
/// <summary> /// Generate PNR and Send Emal Notification /// </summary> /// <param name="travelReqId"></param> /// <param name="emailId"></param> /// <returns></returns> private string GeneratePNR(Int64 travelReqId, string emailId) { //Generate PNR For Approver or HOD string strHoldPNR = ConfigurationManager.AppSettings["strHOLDPNR"].Trim(); var sodRequestsList = new List <TravelRequestMasterModels>(); var sodflightList = new List <FlightDetailModels>(); var passengerList = new List <PassengerDetailModels>(); var passengerMealsList = new List <PassengerMealAllocationModels>(); var hotelList = new List <TravelRequestHotelDetailModels>(); var dicList = new Dictionary <string, object>(); dicList = _sodApproverRepositorty.GetSodBookingInfoForPNR(travelReqId); sodRequestsList = dicList["bookingInfo"] as List <TravelRequestMasterModels>; sodflightList = dicList["flightInfo"] as List <FlightDetailModels>; passengerList = dicList["passInfo"] as List <PassengerDetailModels>; passengerMealsList = dicList["mealsInfo"] as List <PassengerMealAllocationModels>; hotelList = dicList["hotelInfo"] as List <TravelRequestHotelDetailModels>; var reqType = sodRequestsList[0].SodBookingTypeId == 1 ? "SOD" : "NON-SOD"; //Check Meal Option from Old allocation if (passengerMealsList.Count == 0) { //Add Passenger meal Option for SOD Flights foreach (var item in sodflightList) { var passengerMealsListItem = new PassengerMealAllocationModels(); passengerMealsListItem.TravelRequestId = item.TravelRequestId; passengerMealsListItem.Sector = item.OriginPlace + "-" + item.DestinationPlace; passengerMealsListItem.MealType = sodRequestsList[0].Meals; passengerMealsListItem.PassengerId = 0; passengerMealsList.Add(passengerMealsListItem); } } var pnr = NavitaireServices.Generate_PNR(sodRequestsList, sodflightList, passengerList, passengerMealsList); pnr = pnr + "|Close"; //Update in database var c = _sodApproverRepositorty.UpdatePnr(pnr, travelReqId); if (c > 0) { var pnrc = pnr.Split('|')[0]; if (sodRequestsList[0].IsAmountPaidByTraveller.Equals(true)) { //Get PNR Booking Time var pnrInfo = _sodApproverRepositorty.GetPNRAmountAndTime(sodRequestsList[0].TravelRequestId); var holdAmount = float.Parse(pnrInfo.Split('|')[1]); var holdAmounts = string.Format("{0:0.00}", holdAmount).ToString(); var pnrGenerationTime = Convert.ToDateTime(pnrInfo.Split('|')[2]); //Get Hold Time var holdDateTime = CommonWebMethod.CommonWebMethods.GetHoldBookingDateTime(sodRequestsList[0].SodBookingTypeId, sodRequestsList[0].BookingFor, sodflightList[0].TravelDate, sodflightList[0].DepartureTime, pnrGenerationTime); var HoldTime = holdDateTime.ToString("t"); var HoldDate = holdDateTime.ToString("dd/MMM/yyyy"); var strholdDT = HoldTime + " dated " + HoldDate; strHoldPNR = strHoldPNR.Replace("[holdDT]", strholdDT); strHoldPNR = strHoldPNR.Replace("[pnrAmt]", holdAmounts); pnrc = pnrc + "." + strHoldPNR; } else { strHoldPNR = ""; } //Send Email Notification var emailSubject = reqType + " " + "Booking Request Notification Acceptance through Revenue and Itinerary :" + System.DateTime.Now.ToString("dd-MMM-yyyy-hh:mm:ss"); var emailTemplateName_User = "******"; var emailCredentials = EmailCredentials(emailSubject, emailTemplateName_User, sodRequestsList, sodflightList, passengerList, passengerMealsList, hotelList, travelReqId.ToString(), ""); emailCredentials.TemplateFilePath = emailCredentials.TemplateFilePath.Replace("[PNR]", pnrc); EmailNotifications.SendBookingRequestNotificationTo_Requester(emailCredentials, sodRequestsList[0].EmailId.Trim()); } return(pnr.Split('|')[0].Trim().ToString()); }
/// <summary> /// Reject Sod Booking Request /// </summary> /// <returns></returns> public JsonResult RejectSodBookingRequest(string travelReqId) { var jsonmsg = string.Empty; var bookingType = string.Empty; var strHoldPNR = string.Empty; if ((travelReqId.Split(',')[0] == "undefined") || (travelReqId.Split(',')[0] == "")) { return(Json("Invalid record.", JsonRequestBehavior.AllowGet)); } var approvalList = new TravelRequestApprovalModels() { TravelRequestId = Convert.ToInt64(travelReqId.Split(',')[0]), ApprovedByEmpId = Convert.ToInt32(Session["EmpId"].ToString()), RevenueApprovedStatus = 2,//for reject RevenueApprovedDate = System.DateTime.Now, Comment = travelReqId.Split(',')[4] }; //Check Duplicate PNR var chkpnr = Services.ADO.SodCommonServices.CheckDuplicatePNR(Convert.ToInt64(travelReqId.Split(',')[0]), 1); if (!chkpnr.Equals("0")) { return(Json("Sorry : PNR has been already generated for this Booking Request ID-" + travelReqId.Split(',')[0] + ".Rejection is not allowed.\n Existing PNR No. :" + chkpnr, JsonRequestBehavior.AllowGet)); } //Get Data to show for rejection var sodRequestsList = new List <TravelRequestMasterModels>(); var sodflightList = new List <FlightDetailModels>(); var passengerList = new List <PassengerDetailModels>(); var approvalInfoList = new List <TravelRequestApprovalModels>(); var passengerMealsList = new List <PassengerMealAllocationModels>(); var hotelList = new List <TravelRequestHotelDetailModels>(); var s = _sodApproverRepositorty.RejectSodBookingRequest_Revenue(approvalList); if (s >= 1) { var dicList = new Dictionary <string, object>(); dicList = _sodApproverRepositorty.GetSodBookingInfoForPNR(Convert.ToInt64(travelReqId.Split(',')[0])); sodRequestsList = dicList["bookingInfo"] as List <TravelRequestMasterModels>; sodflightList = dicList["flightInfo"] as List <FlightDetailModels>; passengerList = dicList["passInfo"] as List <PassengerDetailModels>; approvalInfoList = dicList["approvalInfo"] as List <TravelRequestApprovalModels>; passengerMealsList = dicList["mealsInfo"] as List <PassengerMealAllocationModels>; hotelList = dicList["hotelInfo"] as List <TravelRequestHotelDetailModels>; bookingType = sodRequestsList[0].SodBookingTypeId == 1 ? "SOD" : "NON-SOD"; //by lata (to gnerate standby PNR and send Email notification if (travelReqId.Split(',')[5] == "1") { sodRequestsList[0].BookingFor = "standby"; var pnr = NavitaireServices.Generate_PNR(sodRequestsList, sodflightList, passengerList, passengerMealsList); pnr = pnr + "|0001.11"; var pnrc = "Your Standby PNR is :" + pnr.Split('|')[0]; //insert value in sodtravelrequestmaster_reject with standbyPNR SaveRejectwithStandByPNR(sodRequestsList[0], pnr); sendNotification_RejectStandby(sodRequestsList, sodflightList, passengerList, passengerMealsList, hotelList, travelReqId.Split(',')[0], pnrc); } //Hold PNR if (sodRequestsList[0].IsAmountPaidByTraveller.Equals(true)) { strHoldPNR = ConfigurationManager.AppSettings["strHOLDPNRPassenger"].Trim(); } else { strHoldPNR = ""; } //Send Rejection Email Notification var emailSubject = bookingType + " " + "Booking Request Notification Rejection through Revenue and Itinerary :" + System.DateTime.Now.ToString("dd-MMM-yyyy-hh:mm:ss"); var emailTemplateName = "SodBookingRequest_Rejection_User.html"; var emailCredentials = EmailCredentials(emailSubject, emailTemplateName, sodRequestsList, sodflightList, passengerList, passengerMealsList, hotelList, travelReqId.Split(',')[0].ToString(), strHoldPNR); if (approvalInfoList[0].IsMandatoryTravel == 1) { emailCredentials.TemplateFilePath = emailCredentials.TemplateFilePath.Replace("[Team]", "Revenue Dept. and forwarded to C-Level Approval."); } else if (approvalInfoList[0].IsMandatoryTravel == 0) { emailCredentials.TemplateFilePath = emailCredentials.TemplateFilePath.Replace("[Team]", "Revenue Dept. and the booking request has been closed."); } TempData["emailData"] = emailCredentials; TempData["emailId"] = sodRequestsList[0].EmailId.Trim(); //Check If Mandatory for send email if (approvalInfoList[0].IsMandatoryTravel == 1) { emailSubject = bookingType + " " + "Booking Request Notification Rejection through Revenue and Itinerary :" + System.DateTime.Now.ToString("dd-MMM-yyyy-hh:mm:ss"); emailTemplateName = "SodBookingRequestNotificationTemplate_HOD.html"; //Send Notification to C-Level: Need C- Level Approval Email Template var counter = 0; var emailids = _sodApproverRepositorty.GetCXOMailId(sodRequestsList[0].CLevelApprover1, sodRequestsList[0].CLevelApprover2); string[] arr = emailids.Split('|'); if (arr.Length == 2) { counter = 1; } else if (arr.Length == 4) { counter = 2; } for (int i = 0; i <= counter; i++) { var skey = new StringBuilder(); skey.Append(sodRequestsList[0].TravelRequestId.ToString() + ","); skey.Append(sodRequestsList[0].EmailId.Trim() + ","); skey.Append(sodRequestsList[0].SodBookingTypeId.ToString() + ","); skey.Append(sodRequestsList[0].BookingFor.Trim() + ","); skey.Append(arr[i] + ","); skey.Append(sodRequestsList[0].IsMandatoryTravel.ToString() + ",RN"); var uri1 = ConfigurationManager.AppSettings["emailApprovalPathcxo"].Trim() + "?str=" + CipherURL.Encrypt(skey + "&type=a"); var uri2 = ConfigurationManager.AppSettings["emailApprovalPathcxo"].Trim() + "?str=" + CipherURL.Encrypt(skey + "&type=r"); var approvaltype = "Please help to accord your Acceptance or Rejection."; var appLink = "<table><tr style='font-family:Arial;'><td style='width:110px; height:25px; background-color:#04B431;text-align:center;border-radius:5px'><a name='app' style='color:#fff; text-decoration:none;' href='" + uri1 + "'>Acceptance</a></td> <td> </td> <td style='width:110px; height:25px; background-color:#b33;text-align:center;border-radius:5px'><a name='rej' style='color:#fff; text-decoration:none;' href='" + uri2 + "'>Rejection</a> </td></tr></table>"; //Wrap link in template emailCredentials = EmailCredentials(emailSubject, emailTemplateName, sodRequestsList, sodflightList, passengerList, passengerMealsList, hotelList, travelReqId.Split(',')[0].ToString(), strHoldPNR); var templateData = emailCredentials.TemplateFilePath; var hodName = "Sir/Madam"; templateData = templateData.Replace("[approvaltype]", approvaltype); templateData = templateData.Replace("[appLink]", appLink); templateData = templateData.Replace("[hodName]", hodName); emailCredentials.TemplateFilePath = templateData; i = i + 1; EmailNotifications.SendBookingRequestNotificationTo_Requester(emailCredentials, arr[i]); } jsonmsg = bookingType + " " + "booking request has been rejected and has been sent to CXO Panel."; } else if (approvalInfoList[0].IsMandatoryTravel == 0) { //This methos also can be used by Revenue dept to close the Booking Request var trRequestMaster = new TravelRequestMasterModels() { TravelRequestId = Convert.ToInt64(travelReqId.Split(',')[0]), BookingStatus = "Close", StatusDate = System.DateTime.Now }; var c = _sodApproverRepositorty.CloseSodBookingRequest_HOD(trRequestMaster); jsonmsg = bookingType + " " + "booking request has been rejected and the request has been closed."; } } return(Json(s >= 1 ? jsonmsg : string.Empty, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Send Email Notification & generate PNR for booking requester/user /// </summary> /// <returns></returns> public string BackgroundProcessNotification() { var jsonmsg = string.Empty; //Sod Confirm booking var travelReqId = TempData["requestData"].ToString(); if (travelReqId.Split(',')[2].Equals("SOD") && travelReqId.Split(',')[3].Equals("Confirm")) { var pnrStatus = GeneratePNR(Convert.ToInt64(travelReqId.Split(',')[0]), travelReqId.Split(',')[1].Trim()); if (pnrStatus.Length.Equals(6)) { jsonmsg = "SOD Booking Request ID :" + travelReqId.Split(',')[2].ToUpper() + "-" + travelReqId.Split(',')[0] + "\n Booking Type :Confirm \n\n Approval Process has been completed successfully.\n PNR No :" + pnrStatus; } } else { //Send Email Notification to One CXO :23-Nov-2016 //Get Data to show for rejection var strHoldPNR = ""; var sodRequestsList = new List <TravelRequestMasterModels>(); var sodflightList = new List <FlightDetailModels>(); var passengerList = new List <PassengerDetailModels>(); var approvalInfoList = new List <TravelRequestApprovalModels>(); var passengerMealsList = new List <PassengerMealAllocationModels>(); var hotelList = new List <TravelRequestHotelDetailModels>(); var dicList = new Dictionary <string, object>(); //Fill Value in List dicList = _sodApproverRepositorty.GetSodBookingInfoForPNR(Convert.ToInt64(travelReqId.Split(',')[0])); sodRequestsList = dicList["bookingInfo"] as List <TravelRequestMasterModels>; sodflightList = dicList["flightInfo"] as List <FlightDetailModels>; passengerList = dicList["passInfo"] as List <PassengerDetailModels>; approvalInfoList = dicList["approvalInfo"] as List <TravelRequestApprovalModels>; passengerMealsList = dicList["mealsInfo"] as List <PassengerMealAllocationModels>; hotelList = dicList["hotelInfo"] as List <TravelRequestHotelDetailModels>; var bookingType = sodRequestsList[0].SodBookingTypeId == 1 ? "SOD" : "NON-SOD"; //Allocate Email Template var emailSubject = bookingType + " " + "Booking Request Notification Acceptance through Revenue and Itinerary :" + System.DateTime.Now.ToString("dd-MMM-yyyy-hh:mm:ss"); var emailTemplateName = "SodBookingRequestNotificationTemplate_HOD.html"; //Send Notification to one C-Level: var strcxodetails = _sodApproverRepositorty.GetCXOMailId(sodRequestsList[0].CLevelApprover1, sodRequestsList[0].CLevelApprover2); var emailid = strcxodetails.Split('|')[1]; var cxoEmpId = strcxodetails.Split('|')[0]; var skey = new StringBuilder(); skey.Append(sodRequestsList[0].TravelRequestId.ToString() + ","); skey.Append(sodRequestsList[0].EmailId.Trim() + ","); skey.Append(sodRequestsList[0].SodBookingTypeId.ToString() + ","); skey.Append(sodRequestsList[0].BookingFor.Trim() + ","); skey.Append(cxoEmpId + ","); skey.Append(sodRequestsList[0].IsMandatoryTravel.ToString() + ",RY"); //passing querystring var uri1 = ConfigurationManager.AppSettings["emailApprovalPathcxo"].Trim() + "?str=" + CipherURL.Encrypt(skey + "&type=a"); var uri2 = ConfigurationManager.AppSettings["emailApprovalPathcxo"].Trim() + "?str=" + CipherURL.Encrypt(skey + "&type=r"); var approvaltype = "Please help to accord your Acceptance or Rejection."; var appLink = "<table><tr style='font-family:Arial;'><td style='width:110px; height:25px; background-color:#04B431;text-align:center;border-radius:5px'><a name='app' style='color:#fff; text-decoration:none;' href='" + uri1 + "'>Acceptance</a></td> <td> </td> <td style='width:110px; height:25px; background-color:#b33;text-align:center;border-radius:5px'><a name='rej' style='color:#fff; text-decoration:none;' href='" + uri2 + "'>Rejection</a> </td></tr></table>"; //Get Hold booking Status if (sodRequestsList[0].IsAmountPaidByTraveller.Equals(true)) { strHoldPNR = ConfigurationManager.AppSettings["strHOLDPNRPassenger"].Trim(); } else { strHoldPNR = ""; } //Wrap link in template var emailCredentials = EmailCredentials(emailSubject, emailTemplateName, sodRequestsList, sodflightList, passengerList, passengerMealsList, hotelList, travelReqId.Split(',')[0].ToString(), strHoldPNR); var templateData = emailCredentials.TemplateFilePath; var hodName = "Sir/Madam"; templateData = templateData.Replace("[approvaltype]", approvaltype); templateData = templateData.Replace("[appLink]", appLink); templateData = templateData.Replace("[hodName]", hodName); emailCredentials.TemplateFilePath = templateData; //Send email notification EmailNotifications.SendBookingRequestNotificationTo_Requester(emailCredentials, emailid); jsonmsg = "SOD Booking Request ID :" + travelReqId.Split(',')[2].ToUpper() + "-" + travelReqId.Split(',')[0] + "\n Booking Type :Confirm \n\n Approval Process has been completed successfully.\n The booking request has been sent to CXO Panel at -" + emailid; } return(jsonmsg); }