public async Task <IActionResult> Settings()
        {
            if (string.IsNullOrEmpty(HttpContext.Session.GetString("HomeID")))
            {
                return(RedirectToAction("Login", "Home"));
            }

            var settings = new HomeSettingPostViewModel();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/settings";
                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)
                    {
                        settings = JsonConvert.DeserializeObject <HomeSettingPostViewModel>(content);
                    }
                }
            }

            if (settings != null)
            {
                return(View(settings));
            }

            return(View());
        }
        public async Task <IActionResult> Settings(HomeSettingPostViewModel settings)
        {
            if (settings.RentDueDateDay <= 0 || settings.RentDueDateDay >= 28)
            {
                ModelState.AddModelError("RentDueDateDay", "Rent due date day value can only be between 1 and 27, included.");
                return(View(settings));
            }

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

                using (var response = await httpClient.PostAsJsonAsync(requestUri, settings))
                {
                    var content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        settings = JsonConvert.DeserializeObject <HomeSettingPostViewModel>(content);

                        if (settings.ChangeHttpSession)
                        {
                            HttpContext.Session.SetString("HomeName", settings.HomeName);
                        }
                    }
                }
            }

            return(RedirectToAction(nameof(Index)));
        }
        public ActionResult PostHomeSettings([FromBody] HomeSettingPostViewModel settings)
        {
            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 settingsExists = new BaseCRUDService(currentUserID).GetEntity <HomeSettingPostViewModel>(x => x.HomeID == currentHomeID);

                if (settingsExists != null)
                {
                    settings.ID = settingsExists.ID;
                }

                settings.HomeID = currentHomeID;

                var home            = new BaseCRUDService(currentUserID).GetEntity <HomePostViewModel>(currentHomeID);
                var currentHomeName = home.Name;

                if (!string.IsNullOrEmpty(settings.HomeName) && !home.Name.Equals(settings.HomeName))
                {
                    home.Name = settings.HomeName;
                    new BaseCRUDService(currentUserID).Save(home);
                }

                settings = new BaseCRUDService(currentUserID).Save(settings);

                if (!string.IsNullOrEmpty(settings.HomeName) && !currentHomeName.Equals(settings.HomeName))
                {
                    settings.ChangeHttpSession = true;
                }

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