/// <summary>
        /// Deletes the user.
        /// </summary>
        /// <param name="details">The details.</param>
        /// <returns></returns>
        public async Task <APIResponse> DeleteUserProfile(ProfileIdDetails details)
        {
            try
            {
                var client   = httpClientFactory.CreateClient(IdentityServiceOperation.serviceName);
                var response = await client.DeleteAsync(servicesConfig.Identity + IdentityServiceOperation.DeleteUser(details.ProfileId));

                return(JsonConvert.DeserializeObject <APIResponse>(await response.Content.ReadAsStringAsync()));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'DeleteUser()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
        /// <summary>
        /// Updates the user.
        /// </summary>
        /// <param name="details">The details.</param>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <APIResponse> UpdateUserProfile(ProfileIdDetails details, UpdateUserProfileRequest request)
        {
            try
            {
                string filename   = "";
                var    folderName = Path.Combine("UserProfiles");
                var    pathToSave = Path.Combine("D:", "HappyWedding", folderName);

                if (request.ProfilePhoto.Length > 0)
                {
                    string format = System.IO.Path.GetExtension(request.ProfilePhoto.FileName);
                    filename = request.UserId + "_UserProfiles_" + DateTime.Now + format;
                    string filenme  = filename.Replace(":", ".");
                    var    filePath = Path.Combine(pathToSave, filenme);
                    using var fileStream = new FileStream(filePath, FileMode.Create);
                    request.ProfilePhoto.CopyTo(fileStream);
                    request.Photo        = filePath;
                    request.ProfilePhoto = null;
                }

                var client = httpClientFactory.CreateClient(IdentityServiceOperation.serviceName);

                var         param       = JsonConvert.SerializeObject(request);
                HttpContent contentPost = new StringContent(param, Encoding.UTF8, "application/json");

                var response = await client.PutAsync(servicesConfig.Identity + IdentityServiceOperation.UpdateUser(details.ProfileId), contentPost);

                if (response.StatusCode == HttpStatusCode.NoContent)
                {
                    var user = new User {
                        Id = details.ProfileId, FirstName = request.FirstName, LastName = request.LastName
                    };
                    usernameUpdateSender.SendUserName(user);
                }

                return(JsonConvert.DeserializeObject <APIResponse>(await response.Content.ReadAsStringAsync()));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'UpdateUser()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
        /// <summary>
        /// Verifies the otp.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <APIResponse> VerifyOtp(ProfileIdDetails details, VerifyOtpRequest request)
        {
            try
            {
                var client = httpClientFactory.CreateClient(IdentityServiceOperation.serviceName);

                var         param       = JsonConvert.SerializeObject(request);
                HttpContent contentPost = new StringContent(param, Encoding.UTF8, "application/json");

                var response = await client.PostAsync(servicesConfig.Identity + IdentityServiceOperation.VerifyOtp(details.ProfileId), contentPost);

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'VerifyOtp()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }