public BookingsDashboardRes GetBookingsDashboardSummary([FromBody] SalesDashboardReq request) { var response = new BookingsDashboardRes(); try { if (request != null) { response = _MISRepository.GetBookingsDashboardSummary(request); if (response == null) { response.ResponseStatus.Status = "Failure"; response.ResponseStatus.ErrorMessage = "An error."; } } else { response.ResponseStatus.Status = "Failure"; response.ResponseStatus.ErrorMessage = "Request details can not be blank."; } } catch (Exception ex) { response.ResponseStatus.Status = "Failure"; response.ResponseStatus.ErrorMessage = "An error occurs " + ex.Message.ToString(); } return(response); }
public async Task <BookingsDashboardRes> GetBookingsDashboardSummary(SalesDashboardReq request, string ticket) { BookingsDashboardRes salesDashboardRes = new BookingsDashboardRes(); salesDashboardRes = await serviceProxy.PostData(_configuration.GetValue <string>("ServiceMIS:GetBookingsDashboardSummary"), request, typeof(BookingsDashboardRes), ticket); return(salesDashboardRes); }
public BookingsDashboardRes GetBookingsDashboardSummary(SalesDashboardReq request) { BookingsDashboardRes response = new BookingsDashboardRes(); try { List <string> statusList = new List <string> { "C", "!", "J" }; #region filters //FilterDefinition<Bookings> filter = Builders<Bookings>.Filter.Empty; //if (!string.IsNullOrWhiteSpace(request.SalesOfficeID) && !string.IsNullOrWhiteSpace(request.SalesOffice)) //{ // var company = _MongoContext.mCompanies.AsQueryable().Where(a => a.Company_Id == request.SalesOfficeID).FirstOrDefault(); // var SalesUserList = company?.ContactDetails?.Select(a => a.MAIL).ToList(); // filter = filter & Builders<mQuote>.Filter.Where(x => SalesUserList.Contains(x.SalesPerson)); //} //if (!string.IsNullOrWhiteSpace(request.DestinationID) && !string.IsNullOrWhiteSpace(request.Destination)) //{ // filter = filter & Builders<mQuote>.Filter.Regex(x => x.AgentProductInfo.Destination, new BsonRegularExpression(new Regex(request.Destination))); //} //if (!string.IsNullOrWhiteSpace(request.AgentID) && !string.IsNullOrWhiteSpace(request.Agent)) //{ // filter = filter & Builders<mQuote>.Filter.Eq(x => x.AgentInfo.AgentName, request.Agent.Trim()); //} //if (!string.IsNullOrWhiteSpace(request.SalesPersonID) && !string.IsNullOrWhiteSpace(request.SalesPerson)) //{ // filter = filter & Builders<mQuote>.Filter.Eq(x => x.SalesPerson, request.SalesPersonID.Trim()); //} #endregion var resSales = _MongoContext.Bookings.AsQueryable().Where(a => !statusList.Contains(a.STATUS)).ToList().Select(a => new SalesDashboardData { QRFID = a.BookingNumber, AdultPax = a.BookingPax.Where(b => b.PERSTYPE == "ADULT").FirstOrDefault()?.PERSONS, //Budget = 1,//a.AgentProductInfo.BudgetAmount, SalesOfficer = a.StaffDetails?.Staff_SalesUser_Name, SalesOffice = a.AgentInfo?.Division_Name, //a.AgentProductInfo.Division, //check SalesOfficeID = a.AgentInfo?.Division_ID, //a.AgentProductInfo.DivisionID, //check //SalesValue = (Budget per person X currency conversion to EUR) X no of pax in "Twin" and "Double" rooms X no of departures SalesValue = 1, //CalculateSalesValue(a), //check NoOfDepartures = 1, CreateDate = a.AuditTrail.CREA_DT, StatusDate = a.AuditTrail.MODI_DT, Age = (DateTime.Now.Subtract(Convert.ToDateTime(a.AuditTrail.MODI_DT)).Days) // / 7 }).ToList(); var monthlist = CurrentFinancialYear(DateTime.Now, "yyyy-MM"); int year = Convert.ToInt16(monthlist?[0].Substring(0, 4)); DateTime FinStartDate = new DateTime(year, 4, 1); DateTime FinEndDate = new DateTime(year + 1, 3, 31); response.BookingsDashboardSummary = new BookingsDashboardSummary { FinancialYearMonths = CurrentFinancialYear(DateTime.Now), BookingVolumeGraph = resSales.Where(a => !string.IsNullOrEmpty(a.SalesOffice) && (a.CreateDate >= FinStartDate && a.CreateDate <= FinEndDate)) .GroupBy(a => new { a.CreateDate.Value.Year, a.CreateDate.Value.Month }) .Select(a => new PassengerForecastGraph { MonthYear = Convert.ToDateTime(a.FirstOrDefault().CreateDate).ToString("yyyy-MM"), PaxDetails = a.GroupBy(b => b.SalesOffice).Select(b => new SalesOfficeWiseDetailsGraph { SalesOffice = b.FirstOrDefault().SalesOffice, Quotes = b.Count(), TotalPax = Convert.ToInt32(b.Sum(c => c.AdultPax)), SalesValue = Convert.ToDouble(b.Sum(c => c.SalesValue)) }).OrderBy(b => b.SalesOffice).ToList() }).ToList(), BookingVolumeGrid = resSales.Where(a => !string.IsNullOrEmpty(a.SalesOffice) && (a.CreateDate >= FinStartDate && a.CreateDate <= FinEndDate)) .GroupBy(a => a.SalesOffice) .Select(a => new PassengerForecastGrid { SalesOffice = a.FirstOrDefault().SalesOffice, PaxDetails = a.GroupBy(b => new { b.CreateDate.Value.Month, b.CreateDate.Value.Year }).Select(b => new SalesOfficeWiseDetailsGrid { MonthYear = Convert.ToDateTime(b.FirstOrDefault().CreateDate).ToString("MMM yyyy"), Quotes = b.Count(), TotalPax = Convert.ToInt32(b.Sum(c => c.AdultPax)), SalesValue = Convert.ToDouble(b.Sum(c => c.SalesValue)) }).ToList() }).OrderBy(a => a.SalesOffice).ToList(), }; response.BookingsDashboardSummary.SalesOfficeList = response.BookingsDashboardSummary.BookingVolumeGrid.Select(a => a.SalesOffice).ToList(); monthlist.ForEach(b => { if (response.BookingsDashboardSummary.BookingVolumeGraph.Where(a => a.MonthYear == b).Count() < 1) { response.BookingsDashboardSummary.BookingVolumeGraph.Add(new PassengerForecastGraph { MonthYear = b, PaxDetails = new List <SalesOfficeWiseDetailsGraph>() }); } }); } catch (System.Exception ex) { Console.WriteLine(ex.Message); } return(response); }
public IActionResult BookingsDashboard() { try { #region Bind Dashboard Data BookingsDashboardRes response = objMISProviders.GetBookingsDashboardSummary(new SalesDashboardReq(), token).Result; var sales = response.BookingsDashboardSummary.BookingVolumeGraph; StringBuilder json; SalesOfficeWiseDetailsGraph paxdetail; #region Booking Volume Json json = new StringBuilder(); foreach (var pax in sales.OrderBy(a => a.MonthYear)) { if (json.Length > 0) { json.Append(","); } else { json.Append("["); } json.Append("{ \"month\" : \""); json.Append(pax.MonthYear); json.Append("\""); foreach (var SalesOffice in response.BookingsDashboardSummary.SalesOfficeList) { paxdetail = pax.PaxDetails.Where(a => a.SalesOffice == SalesOffice).FirstOrDefault(); json.Append(" , \""); json.Append(SalesOffice); if (paxdetail == null || paxdetail?.Quotes == 0) { json.Append("\" : \""); json.Append(0); json.Append("\""); } else { json.Append("\" : \""); json.Append(paxdetail?.Quotes); json.Append("\""); } } json.Append(" }"); } json.Append("]"); response.BookingsDashboardSummary.BookingVolumeJson = json.ToString(); #endregion #region Passenger Volume Json json = new StringBuilder(); foreach (var pax in sales.OrderBy(a => a.MonthYear)) { if (json.Length > 0) { json.Append(","); } else { json.Append("["); } json.Append("{ \"month\" : \""); json.Append(pax.MonthYear); json.Append("\""); foreach (var SalesOffice in response.BookingsDashboardSummary.SalesOfficeList) { paxdetail = pax.PaxDetails.Where(a => a.SalesOffice == SalesOffice).FirstOrDefault(); json.Append(" , \""); json.Append(SalesOffice); if (paxdetail == null || paxdetail?.TotalPax == 0) { json.Append("\" : \""); json.Append(0); json.Append("\""); } else { json.Append("\" : \""); json.Append(paxdetail?.TotalPax); json.Append("\""); } } json.Append(" }"); } json.Append("]"); response.BookingsDashboardSummary.PassengerVolumeJson = json.ToString(); #endregion #region Booking Volume Json json = new StringBuilder(); foreach (var pax in sales.OrderBy(a => a.MonthYear)) { if (json.Length > 0) { json.Append(","); } else { json.Append("["); } json.Append("{ \"month\" : \""); json.Append(pax.MonthYear); json.Append("\""); foreach (var SalesOffice in response.BookingsDashboardSummary.SalesOfficeList) { paxdetail = pax.PaxDetails.Where(a => a.SalesOffice == SalesOffice).FirstOrDefault(); json.Append(" , \""); json.Append(SalesOffice); if (paxdetail == null || paxdetail?.SalesValue == 0) { json.Append("\" : \""); json.Append(0); json.Append("\""); } else { json.Append("\" : \""); json.Append(paxdetail?.SalesValue); json.Append("\""); } } json.Append(" }"); } json.Append("]"); response.BookingsDashboardSummary.BookingRevenueJson = json.ToString(); #endregion return(View(response.BookingsDashboardSummary)); #endregion } catch (Exception ex) { Console.WriteLine(ex.Message); return(Content("An error occured while processing your request")); } }