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 async Task <JsonResult> GetHomeStatus()
        {
            var result = string.Empty;

            if (!string.IsNullOrEmpty(HttpContext.Session.GetString("HomeID")))
            {
                var status = new HomeStatusPostViewModel();
                var user   = new UserPostViewModel();

                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);
                        }
                    }
                }

                if (status.ID > 0)
                {
                    using (var httpClient = new HttpClient())
                    {
                        var requestUri = $"{Configuration.DefaultAPI}/users/{status.UserID}";
                        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)
                            {
                                user = JsonConvert.DeserializeObject <UserPostViewModel>(content);
                            }
                        }
                    }

                    result = $"{status.Status};{user.Name};{status.Details}";
                    return(Json(result));
                }
            }

            result = $"1;system_generated;No one has set a status yet!";
            return(Json(result));
        }
        public ActionResult GetHomeStatus()
        {
            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 result = new HomeStatusPostViewModel();

                if (new BaseCRUDService(currentUserID).Any <HomeStatusPostViewModel>(x => x.HomeID == currentHomeID))
                {
                    result = new BaseCRUDService(currentUserID).GetEntity <HomeStatusPostViewModel>(x => x.HomeID == currentHomeID);
                }

                if (result != null)
                {
                    return(Ok(result));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (System.Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, $"{ex.Message}"));
            }
        }
        public ActionResult PostHomeStatus(string homeStatusString, string homeStatusDetailsString)
        {
            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 homeStatusDetails = string.Empty;

                if (!string.IsNullOrEmpty(homeStatusDetailsString))
                {
                    homeStatusDetails = homeStatusDetailsString;
                }

                if (new BaseCRUDService(currentUserID).Any <HomeStatusPostViewModel>(x => x.HomeID == currentHomeID))
                {
                    var status = new BaseCRUDService(currentUserID).GetEntity <HomeStatusPostViewModel>(x => x.HomeID == currentHomeID);

                    status.Status  = int.Parse(homeStatusString);
                    status.Details = homeStatusDetails;
                    status.UserID  = currentUserID;

                    new BaseCRUDService(currentUserID).Save(status);

                    if (status != null)
                    {
                        return(Ok(status));
                    }
                    else
                    {
                        return(NotFound());
                    }
                }
                else
                {
                    var status = new HomeStatusPostViewModel()
                    {
                        Status  = int.Parse(homeStatusString),
                        Details = homeStatusDetails,
                        UserID  = currentUserID,
                        HomeID  = currentHomeID
                    };

                    new BaseCRUDService(currentUserID).Save(status);

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