public async Task <IEnumerable <CatalogItemViewModel> > GetCatalogItemsAsync(ClaimsPrincipal user) { ISpecification <CatalogItem> listSpecification; //if (user.IsInPartnerRole()) //{ // var ownerId = user.FindFirstValue(Constants.ClaimTypes.OwnerIdentifier); // listSpecification = new CatalogItemForOwnerSpecification(ownerId); //} //else //{ // listSpecification = new AllCatalogItemsSpecification(); //} listSpecification = new AllCatalogItemsSpecification(); var catalogItems = await _catalogItemRepository.ListAsync(listSpecification); return(catalogItems.Select(catalogItem => { var newItem = _manager.GetIndustry().ConvertItem(catalogItem); return new CatalogItemViewModel { Id = newItem.Id, OwnerId = newItem.OwnerId, ProductId = newItem.ProductId, ProductName = newItem.ProductName, ProductPictureUrl = newItem.ProductPictureUrl, ProductAllergyInfo = newItem.ProductAllergyInfo }; })); }
private async Task <TrolleyViewModel> CreateTrolleyViewModelFromTrolleyAsync(Trolley trolley) { var trolleyViewModel = new TrolleyViewModel { Id = trolley.Id, OwnerId = trolley.OwnerId }; foreach (var trolleyItem in trolley.Items) { var trolleyItemViewModel = new TrolleyItemViewModel { Id = trolleyItem.Id, CatalogItemId = trolleyItem.CatalogItemId, Quantity = trolleyItem.Quantity }; var catalogItem = await _catalogItemRepository.GetAsync(trolleyItem.CatalogItemId); var newItem = _manager.GetIndustry().ConvertItem(catalogItem); trolleyItemViewModel.ProductId = newItem.ProductId; trolleyItemViewModel.ProductName = newItem.ProductName; trolleyItemViewModel.ProductPictureUrl = newItem.ProductPictureUrl; trolleyItemViewModel.ProductAllergyInfo = newItem.ProductAllergyInfo; trolleyViewModel.Items.Add(trolleyItemViewModel); } return(trolleyViewModel); }
public override void OnActionExecuted(ActionExecutedContext context) { var industry = _industryManager.GetIndustry(); ViewBag.Industry = industry; base.OnActionExecuted(context); }
public async Task <IActionResult> SendUsernameToEmail([FromBody] SendUsernameInputModel inputClaims) { if (inputClaims == null) { return(StatusCode(StatusCodes.Status400BadRequest, new B2CResponseContent("Can not deserialize input claims", HttpStatusCode.BadRequest))); } try { var b2CGraphClient = new B2CGraphClientService(graphSettingsModel.Tenant, graphSettingsModel.ClientId, graphSettingsModel.ClientSecret, graphSettingsModel.ExtensionAppId); var JSON = await b2CGraphClient.SearchUserByAccountNumber(inputClaims.AccountNumber); JSON = JSON.Replace($"extension_{graphSettingsModel.ExtensionAppId}_PhoneNumber", "phoneNumber"); var result = GraphUsersModel.Parse(JSON); var users = result.value .Where(x => !string.IsNullOrEmpty(x.phoneNumber) && x.phoneNumber.ToLower() == inputClaims.PhoneNumber.ToLower() && x.signInNames.Any(y => y.type == "userName") && x.otherMails.Any()).Select(x => new { UserName = x.signInNames.First(y => y.type == "userName"), Email = x.otherMails.First() }).GroupBy(x => x.Email).ToList(); foreach (var user in users) { var userNames = user.Select(x => x.UserName.value).ToList(); //var htmlContent = "<p>Hi,</p><p>Please find the {usernameplural} associated with the account number '{accountNumber}' <br/><br/> {userNameList}</p><p>Regards,</p><p>The WoodGrove Groceries Team</p>"; var customLanguage = industryManager.GetIndustry(inputClaims.Culture) ?.GetLocalizedEmailString(LocalizedEmailUse.SendUsernames, inputClaims.Culture); if (customLanguage == null) { return(StatusCode(StatusCodes.Status400BadRequest, new B2CResponseContent("Unable to find the localization language", HttpStatusCode.BadRequest))); } var replacements = new Dictionary <string, string>(); replacements.Add("{usernameplural}", "username" + (userNames.Count == 1 ? string.Empty : "s")); replacements.Add("{accountNumber}", inputClaims.AccountNumber); replacements.Add("{userNameList}", string.Join(" < br/>", user.Select(x => x.UserName.value).ToList())); foreach (var kvp in replacements) { customLanguage.EmailCodeHtmlContent = customLanguage.EmailCodeHtmlContent.Replace(kvp.Key, kvp.Value); } //var subject = "Welcome to WoodGrove Groceries"; var subject = customLanguage.EmailCodeSubject; var client = new SendGridClient(Config["SendGrid:ApiKey"]); var from = new EmailAddress(inputClaims.FromAddress); var to = new EmailAddress(user.Key); var plainTextContent = Regex.Replace(customLanguage.EmailCodeHtmlContent, "<[^>]*>", ""); var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, customLanguage.EmailCodeHtmlContent); //var plainTextContent = Regex.Replace(htmlContent, "<[^>]*>", ""); //var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent); try { var response = await client.SendEmailAsync(msg); } catch { return(StatusCode(StatusCodes.Status500InternalServerError, new B2CResponseContent("Failed to send email", HttpStatusCode.InternalServerError))); } } return(Ok(new B2CResponseContent("Success", HttpStatusCode.OK))); } catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError, new B2CResponseContent("Failed to send email", HttpStatusCode.InternalServerError))); } }