public async Task <IActionResult> Index()
        {
            if (string.IsNullOrEmpty(HttpContext.Session.GetString("UserID")))
            {
                return(RedirectToAction("Login", "Account"));
            }

            if (string.IsNullOrEmpty(HttpContext.Session.GetString("HomeID")))
            {
                return(RedirectToAction("Login"));
            }

            var model  = new HomePageDisplayModel();
            var status = new HomeStatusPostViewModel();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/page";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        model = JsonConvert.DeserializeObject <HomePageDisplayModel>(content);
                    }
                }
            }

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/status";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        status = JsonConvert.DeserializeObject <HomeStatusPostViewModel>(content);
                    }
                }
            }

            model.HomeStatus     = status;
            ViewData["Username"] = CurrentUserName;

            return(View(model));
        }
        public ActionResult GetHomePage()
        {
            try
            {
                var currentUserID = 0l;
                var currentHomeID = 0l;
                var re            = Request;
                var headers       = re.Headers;

                if (headers.ContainsKey("CurrentUserID"))
                {
                    currentUserID = long.Parse(headers.GetCommaSeparatedValues("CurrentUserID").FirstOrDefault());
                }

                if (headers.ContainsKey("CurrentHomeID"))
                {
                    currentHomeID = long.Parse(headers.GetCommaSeparatedValues("CurrentHomeID").FirstOrDefault());
                }

                var messages       = new BaseCRUDService(currentUserID).GetCollection <MessageDisplayViewModel>(x => x.HomeID == currentHomeID && x.CreatedByID != 0);
                var messagesResult = new ChatRenderer(currentUserID).BuildMessagesForChat(messages);

                var result = new HomePageDisplayModel()
                {
                    Messages = messagesResult
                };

                if (new BaseCRUDService(currentUserID).Any <HomeSettingPostViewModel>(x => x.HomeID == currentHomeID))
                {
                    var nextMonth      = DateTime.Now.AddMonths(1).Month.ToString();
                    var thisMonth      = DateTime.Now.Month.ToString();
                    var rentDueDate    = string.Empty;
                    var rentDueDateDay = new BaseCRUDService(currentUserID).GetEntity <HomeSettingPostViewModel>(x => x.HomeID == currentHomeID).RentDueDateDay;

                    if (rentDueDateDay.ToString() != "0")
                    {
                        var dateString = $"{rentDueDateDay}/{nextMonth}/{DateTime.Now.Year.ToString()}";

                        if (DateTime.Parse(dateString).AddMonths(-1).Date > DateTime.Now.Date)
                        {
                            dateString = $"{rentDueDateDay}/{thisMonth}/{DateTime.Now.Year.ToString()}";
                        }

                        rentDueDate = DateTime.Parse(dateString).ToLongDateString();
                    }

                    result.RentDueDate = rentDueDate;
                }

                if (result != null)
                {
                    return(Ok(result));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (System.Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, $"{ex.Message}"));
            }
        }