private async Task <ApiResponse> SendShortLinkinMail(List <int> userIds, string firebaseUrl, string webApiKey, string fbDomainUriPrefix, string androidPkgName, string iosBndlId)
        {
            try
            {
                var usersDetail = await _userRepository.GetUserByIdWithProgramDetail(userIds);

                FirebaseDynamicLinkResponseModel response = new FirebaseDynamicLinkResponseModel();
                if (usersDetail.Count > 0)
                {
                    foreach (var userObj in usersDetail)
                    {
                        try
                        {
                            FirebaseDynamicLinkModel fbModel = new FirebaseDynamicLinkModel
                            {
                                dynamicLinkInfo = new Dynamiclinkinfo
                                {
                                    domainUriPrefix = fbDomainUriPrefix,
                                    link            = fbDomainUriPrefix + "?studentID=" + userObj.Id + "&programID=" + userObj.ProgramCode,
                                    androidInfo     = new Androidinfo
                                    {
                                        androidPackageName = androidPkgName
                                    },
                                    iosInfo = new Iosinfo
                                    {
                                        iosBundleId = iosBndlId
                                    }
                                }
                            };


                            HttpClient client = new HttpClient();
                            client.BaseAddress = new Uri(firebaseUrl);
                            client.DefaultRequestHeaders.Accept.Clear();
                            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                            response = await SendShortLinkInMailRefactor(webApiKey, response, userObj, fbModel, client);
                        }
                        catch (Exception ex)
                        {
                            HttpContext.RiseError(new Exception(string.Concat("API := (ImportUser := SendShortLinkinMail - Inner Catch)", ex.Message, " Stack Trace : ", ex.StackTrace, " Inner Exception : ", ex.InnerException)));
                        }
                    }
                }
                return(new ApiResponse(Microsoft.AspNetCore.Http.StatusCodes.Status200OK, true, MessagesConstants.UserSuccessfulRegistration, response));
            }
            catch (Exception ex)
            {
                HttpContext.RiseError(new Exception(string.Concat("API := (Account := SendShortLinkinMail)", ex.Message, " Stack Trace : ", ex.StackTrace, " Inner Exception : ", ex.InnerException)));
                return(new ApiResponse(Microsoft.AspNetCore.Http.StatusCodes.Status200OK, false, MessagesConstants.SomeIssueInProcessing));
            }
        }
        private async Task <FirebaseDynamicLinkResponseModel> SendShortLinkInMailRefactor(string webApiKey, FirebaseDynamicLinkResponseModel response, UserDto userObj, FirebaseDynamicLinkModel fbModel, HttpClient client)
        {
            HttpResponseMessage resp = client.PostAsJsonAsync("shortLinks?key=" + webApiKey, fbModel).Result;

            switch (resp.StatusCode)
            {
            case System.Net.HttpStatusCode.OK:
                response = resp.Content.ReadAsAsync <FirebaseDynamicLinkResponseModel>().Result;
                var emailSMSSettings = (await _setting.GetGeneratSettingValueByKeyGroup(Constants.SMTPConstants.SMSEmail)).FirstOrDefault();
                if (emailSMSSettings != null)
                {
                    if (emailSMSSettings.Value == "1")
                    {
                        var template = await _emailService.GetEmailTemplateByName(EmailTemplates.MagicLink);

                        template.Body = template.Body.Replace("{LogoImage}", string.Concat(_configuration["ServiceAPIURL"], "Images", "/email-logo.png").ToString())
                                        .Replace("{Name}", string.Concat(userObj.FirstName, " ", userObj.LastName))
                                        .Replace("{link}", response.shortLink).Replace("{UserCode}", userObj.UserCode);

                        await _emailService.SendEmail(userObj.EmailAddress, template.Subject, template.Body, template.CCEmail, template.BCCEmail);
                    }
                    else
                    {
                        try
                        {
                            var smstemplate = await _sMSService.GetSMSTemplateByName(SMSTemplates.MagicLink);

                            smstemplate.body = smstemplate.body.Replace("{Name}", string.Concat(userObj.FirstName, " ", userObj.LastName)).Replace("{link}", response.shortLink);
                            await _sMSService.SendSMS(_configuration["accountSID"], _configuration["authToken"], userObj.PhoneNumber, smstemplate.body);
                        }
                        catch (Exception ex)
                        {
                            HttpContext.RiseError(new Exception(string.Concat("API := (ImportUser := SendShortLinkinMail)", ex.Message, " Stack Trace : ", ex.StackTrace, " Inner Exception : ", ex.InnerException)));
                        }
                    }
                }
                var userData = await _userRepository.GetDataByIdAsync(new { id = userObj.Id });

                if (userData != null)
                {
                    userData.InvitationStatus = 2;
                    await _userRepository.AddUpdateUserInvitationStatus(userData);
                }

                break;

            default:
                break;
            }

            return(response);
        }