/// <summary>
        /// Creates the Multicode.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <APIResponse> CreateMultiCode(CreateMulticodeIdentityRequest 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.Wallet + IdentityServiceOperation.CreateMultiCode(), contentPost);

                if (response.IsSuccessStatusCode)
                {
                    var multicode = JsonConvert.DeserializeObject <MultiCodeResponse>(await response.Content.ReadAsStringAsync());
                    return(new APIResponse(multicode, HttpStatusCode.Created));
                }

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'CreateMultiCode()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
        /// <summary>
        /// Gets the Multicode.
        /// </summary>
        /// <param name="multicodeParameter">The Multicode parameter request.</param>
        /// <returns></returns>
        //public async Task<APIResponse> GetAllMultiCodes(MulticodeParameter multicodeParameter)
        //{
        //    try
        //    {
        //        string serializedMulticode;

        //        List<MultiCodeResponse> multicode;

        //        var encodedMulticode = await distributedCache.GetAsync(IdentityServiceOperation.GetWalletCacheName);

        //        if (encodedMulticode != null)
        //        {
        //            serializedMulticode = Encoding.UTF8.GetString(encodedMulticode);
        //            multicode = JsonConvert.DeserializeObject<List<MultiCodeResponse>>(serializedMulticode);
        //        }
        //        else
        //        {
        //            var client = httpClientFactory.CreateClient(IdentityServiceOperation.serviceName);

        //            UriBuilder url = new UriBuilder(servicesConfig.Wallet + IdentityServiceOperation.GetAllMultiCodes());
        //            url.Query = QueryStringHelper.ConvertToQueryString(multicodeParameter);

        //            var response = await client.GetAsync(url.ToString());
        //            multicode = JsonConvert.DeserializeObject<List<MultiCodeResponse>>(await response.Content.ReadAsStringAsync());

        //            serializedMulticode = JsonConvert.SerializeObject(multicode);
        //            encodedMulticode = Encoding.UTF8.GetBytes(serializedMulticode);
        //            var options = new DistributedCacheEntryOptions()
        //                            .SetSlidingExpiration(TimeSpan.FromMinutes(1))
        //                            .SetAbsoluteExpiration(DateTime.Now.AddHours(1));

        //            await distributedCache.SetAsync(IdentityServiceOperation.GetWalletCacheName, encodedMulticode, options);
        //        }

        //        return new APIResponse(multicode, HttpStatusCode.OK);

        //    }
        //    catch (Exception ex)
        //    {
        //        logger.Error(ex, "Exception in method 'GetAllMultiCodes()'");
        //        var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
        //        return new APIResponse(exMessage, HttpStatusCode.InternalServerError);
        //    }
        //}
        public async Task <APIResponse> GetAllMultiCodes(MulticodeParameter multicodeParameter)
        {
            try
            {
                var client = httpClientFactory.CreateClient(IdentityServiceOperation.serviceName);

                UriBuilder url = new UriBuilder(servicesConfig.Wallet + IdentityServiceOperation.GetMultiCodes());
                url.Query = QueryStringHelper.ConvertToQueryString(multicodeParameter);
                var response = await client.GetAsync(url.ToString());

                if (response.IsSuccessStatusCode)
                {
                    var multicode = JsonConvert.DeserializeObject <List <MultiCodeResponse> >(await response.Content.ReadAsStringAsync());
                    return(new APIResponse(multicode, HttpStatusCode.OK));
                }

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'GetAllMultiCodes()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Updates the user.
        /// </summary>
        /// <param name="details">The details.</param>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <APIResponse> UpdateUser(UserIdDetails details, UpdateUserRequest 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.PutAsync(servicesConfig.Identity + IdentityServiceOperation.UpdateUser(details.UserId), contentPost);

                if (response.StatusCode == HttpStatusCode.NoContent)
                {
                    var user = new User {
                        Id = details.UserId, 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>
        /// Gets the kyc datas.
        /// </summary>
        /// <param name="profileId">The profile identifier.</param>
        /// <returns></returns>
        public async Task <APIResponse> GetKYCDatas(int profileId)
        {
            try
            {
                var client   = httpClientFactory.CreateClient(IdentityServiceOperation.serviceName);
                var response = await client.GetAsync(servicesConfig.Identity + IdentityServiceOperation.GetKYCDatas(profileId));

                if (response.IsSuccessStatusCode)
                {
                    var kYCDetailResponses = JsonConvert.DeserializeObject <List <KYCDetailResponse> >(await response.Content.ReadAsStringAsync());

                    foreach (var item in kYCDetailResponses)
                    {
                        var kycDoc = item.Kycdetails;
                        foreach (var item1 in kycDoc)
                        {
                            byte[] b = System.IO.File.ReadAllBytes(item1.KycdocPath);
                            item1.KycdocPath = Convert.ToBase64String(b);
                        }
                    }
                    return(new APIResponse(kYCDetailResponses, HttpStatusCode.OK));
                }

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'GetKYCDatas()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
        /// <summary>
        /// Check if  requirement has been handled
        /// </summary>
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, UserIdRequirement requirement)
        {
            try
            {
                var claimsIdentity = context.User.Identity as ClaimsIdentity;
                if (claimsIdentity != null)
                {
                    var userIdClaim = claimsIdentity.FindFirst(c => c.Type == requirement.UserIdClaim && c.Issuer == authorizationConfig.Issuer);

                    if (!string.IsNullOrEmpty(userIdClaim?.Value))
                    {
                        var client = httpClientFactory.CreateClient(IdentityServiceOperation.serviceName);
                        //var response = client.GetAsync(servicesConfig.Blog + IdentityServiceOperation.GetUser(Convert.ToInt32(userIdClaim?.Value))).Result;
                        var response = client.GetAsync(servicesConfig.Identity + IdentityServiceOperation.GetUser(Convert.ToInt32(userIdClaim?.Value))).Result;
                        var result   = JsonConvert.DeserializeObject <APIResponse>(response.Content.ReadAsStringAsync().Result);

                        if (result.Code == HttpStatusCode.OK)
                        {
                            context.Succeed(requirement);
                        }
                    }
                }

                return(Task.CompletedTask);
            }
            catch (Exception ex)
            {
                logger.LogError(ex, "UserIdExistsRequirement::HandleRequirementAsync");
                return(Task.CompletedTask);
            }
        }
        /// <summary>
        /// Adds the health checks.
        /// </summary>
        /// <param name="services">The services.</param>
        /// <param name="configuration">The configuration.</param>
        /// <returns></returns>
        public static IServiceCollection AddHealthChecks(this IServiceCollection services,
                                                         IConfiguration configuration)
        {
            var servicesConfig = configuration.GetSection("ServicesConfig").Get <ServicesConfig>();

            services.AddHealthChecks()
            .AddUrlGroup(new Uri(servicesConfig.Identity + IdentityServiceOperation.GetHealth()), name: "Identity Service")
            .AddUrlGroup(new Uri(servicesConfig.Blog + BlogServiceOperation.GetHealth()), name: "Blogs Service");

            return(services);
        }
Esempio n. 7
0
        /// <summary>
        /// Gets the user.
        /// </summary>
        /// <param name="details">The details.</param>
        /// <returns></returns>
        public async Task <APIResponse> GetUser(UserIdDetails details)
        {
            try
            {
                var client   = httpClientFactory.CreateClient(IdentityServiceOperation.serviceName);
                var response = await client.GetAsync(servicesConfig.Identity + IdentityServiceOperation.GetUser(details.UserId));

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

                var response = await client.DeleteAsync(servicesConfig.Wallet + IdentityServiceOperation.DeleteMultiCode(details.Code));

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'DeleteMultiCode()'");
                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));
            }
        }
        /// <summary>
        /// Gets the Multicode.
        /// </summary>
        /// <param name="details">The details.</param>
        /// <returns></returns>
        public async Task <APIResponse> GetMultiCode(MulticodeIdDetails details)
        {
            try
            {
                var client = httpClientFactory.CreateClient(IdentityServiceOperation.serviceName);

                var response = await client.GetAsync(servicesConfig.Wallet + IdentityServiceOperation.GetMultiCodeById(details.Code));

                if (response.IsSuccessStatusCode)
                {
                    var multicode = JsonConvert.DeserializeObject <MulticodeResponseDetails>(await response.Content.ReadAsStringAsync());
                    return(new APIResponse(multicode, HttpStatusCode.OK));
                }

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'GetMultiCodeById()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
        /// <summary>
        /// Updates the kyc portion.
        /// </summary>
        /// <param name="profileId">The profile identifier.</param>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <APIResponse> UpdateKYCPortion(int profileId, UpdateKYCPortionRequest 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.PutAsync(servicesConfig.Identity + IdentityServiceOperation.UpdateKYCPortion(profileId), contentPost);

                if (response.StatusCode == HttpStatusCode.NoContent)
                {
                }

                return(JsonConvert.DeserializeObject <APIResponse>(await response.Content.ReadAsStringAsync()));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'UpdateKYCPortion()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
        /// <summary>
        /// Creates the kyc data.
        /// </summary>
        /// <param name="profileId">The profile identifier.</param>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <APIResponse> CreateKYCData(int profileId, CreateKYCDataRequest request)
        {
            try
            {
                string filename   = "";
                var    folderName = Path.Combine("KYCData");
                var    pathToSave = Path.Combine("D:", "HappyWedding", folderName);

                foreach (var item in request.KYCData)
                {
                    if (item.Kycdoc != null)
                    {
                        item.KYCDetails = new List <Core.DTO.Identity.KYCData.KYCDetails>();
                        foreach (var kycPic in item.Kycdoc)
                        {
                            if (kycPic.Length > 0)
                            {
                                string format = System.IO.Path.GetExtension(kycPic.FileName);
                                filename = profileId + "_Kycdoc_" + DateTime.Now + format;
                                string filenme  = filename.Replace(":", ".");
                                var    filePath = Path.Combine(pathToSave, filenme);
                                using var fileStream = new FileStream(filePath, FileMode.Create);
                                kycPic.CopyTo(fileStream);
                                item.KYCDetails.Add(new Core.DTO.Identity.KYCData.KYCDetails {
                                    KycdocPath = filePath
                                });
                            }
                        }
                        item.Kycdoc = null;
                    }
                    if (item.Proofdocument != null)
                    {
                        item.KYCDetails = new List <Core.DTO.Identity.KYCData.KYCDetails>();
                        foreach (var kycPic in item.Proofdocument)
                        {
                            if (kycPic.Length > 0)
                            {
                                string format = System.IO.Path.GetExtension(kycPic.FileName);
                                filename = profileId + "_Proofdocument_" + DateTime.Now + format;
                                string filenme  = filename.Replace(":", ".");
                                var    filePath = Path.Combine(pathToSave, filenme);
                                using var fileStream = new FileStream(filePath, FileMode.Create);
                                kycPic.CopyTo(fileStream);
                                item.KYCDetails.Add(new Core.DTO.Identity.KYCData.KYCDetails {
                                    KycdocPath = filePath
                                });
                            }
                        }
                        item.Proofdocument = null;
                    }
                    if (item.Gstdocument != null)
                    {
                        item.GSTDetails = new List <Core.DTO.Identity.KYCData.GSTDetails>();

                        var gst = JsonConvert.DeserializeObject <Core.DTO.Identity.KYCData.GSTDetails>(item.GSTDetailString);
                        foreach (var kycPic in item.Gstdocument)
                        {
                            if (kycPic.Length > 0)
                            {
                                string format = System.IO.Path.GetExtension(kycPic.FileName);
                                filename = profileId + "_Gstdocument_" + DateTime.Now + format;
                                string filenme  = filename.Replace(":", ".");
                                var    filePath = Path.Combine(pathToSave, filenme);
                                using var fileStream = new FileStream(filePath, FileMode.Create);
                                kycPic.CopyTo(fileStream);
                                item.GSTDetails.Add(new Core.DTO.Identity.KYCData.GSTDetails
                                {
                                    Address      = gst.Address,
                                    BusinessName = gst.BusinessName,
                                    Gstcity      = gst.Gstcity,
                                    Gstnumber    = gst.Gstnumber,
                                    Gststate     = gst.Gststate,
                                    Gstdocument  = filePath
                                });
                            }
                        }
                        item.Gstdocument = 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.PostAsync(servicesConfig.Identity + IdentityServiceOperation.CreateKYCData(profileId), contentPost);

                var kycdetails = JsonConvert.DeserializeObject <KYCDetailResponse>(await response.Content.ReadAsStringAsync());
                return(new APIResponse(kycdetails, HttpStatusCode.Created));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'CreateKYCData()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }