private bool SendEmailIfNeeded(ServiceStatusResponse serviceStatus, string companyName, string url, CompanyServerStatus previousStatus)
        {
            if (serviceStatus.ServiceStatus.SelectOrDefault(response => response.IsServerHealthy(), !serviceStatus.IsApiAvailable))
            {
                return(false);
            }

            if (!previousStatus.SelectOrDefault(status => status.IsEmailSentForCurrentError))
            {
                try
                {
                    _emailSender.SendServiceStatusEmail(companyName, url, serviceStatus.ServiceStatus, serviceStatus.StatusCode);
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex);
                    return(false);
                }
            }
            return(true);
        }
        internal async Task <DashboardPageResponseModel> GetCommonUserDetails()
        {
            string getId = Application.Current.Properties["GetUserId"].ToString();
            ServiceStatusResponse serviceStatusResponse = await ServiceClient.ServiceClientInstance.PostUserWithId(getId);

            try
            {
                if (serviceStatusResponse.theStatusCode == System.Net.HttpStatusCode.OK)
                {
                    var result = await serviceStatusResponse.httpContent.ReadAsStringAsync();

                    var commonHomeModel = JsonConvert.DeserializeObject <DashboardPageResponseModel>(result);
                    return(commonHomeModel);
                }
                else
                {
                    return(null);
                }
            }
            catch
            {
                return(null);
            }
        }
        private CompanyServerStatus HandleServiceStatusResponse(string companyKey, string companyName, ServiceStatusResponse serviceStatusResponse, string url)
        {
            var companyServerStatus = _serviceStatusRepository
                                      .FirstOrDefault(status => status.CompanyKey == companyKey && status.IsProduction == serviceStatusResponse.IsProduction);

            var emailSentForCurrentError = SendEmailIfNeeded(serviceStatusResponse, companyName, url, companyServerStatus);

            if (companyServerStatus == null)
            {
                companyServerStatus = new CompanyServerStatus
                {
                    IsProduction = serviceStatusResponse.IsProduction,
                    CompanyName  = companyName,
                    CompanyKey   = companyKey
                };
            }

            companyServerStatus.ServiceStatus              = serviceStatusResponse.ServiceStatus;
            companyServerStatus.IsApiAvailable             = serviceStatusResponse.IsApiAvailable;
            companyServerStatus.IsServerAvailable          = serviceStatusResponse.IsServerAvailable;
            companyServerStatus.IsEmailSentForCurrentError = emailSentForCurrentError;
            companyServerStatus.HasAuthenticationError     = serviceStatusResponse.HasAuthenticationError;

            return(companyServerStatus);
        }