コード例 #1
0
        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
                };
            }));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            var industry = _industryManager.GetIndustry();

            ViewBag.Industry = industry;

            base.OnActionExecuted(context);
        }
コード例 #4
0
        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)));
            }
        }