예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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"));
            }
        }