Ejemplo n.º 1
0
        public async Task <IActionResult> ManageCocktails(CocktailsViewModel vm)
        {
            if (string.IsNullOrEmpty(vm.Input))
            {
                return(View());
            }

            var viewModel = new CocktailsViewModel();
            var cocktails = await _cocktailServices.GetMultipleCocktailsByNameAsync(vm.Input);

            if (cocktails.Count == 0)
            {
                ModelState.AddModelError(string.Empty, "No cocktails found with this name.");
                return(View(viewModel));
            }

            viewModel.Cocktails = cocktails.Select(c => c.MapToViewModel()).ToList();

            return(View(viewModel));
        }
        public async Task <IActionResult> CreateBarEvent(EventViewModel model)
        {
            string modelAsString = string.Empty;

            var bar = await _barServices.GetBarAsync(model.BarId);

            var cocktailViewModel = new CocktailsViewModel();

            cocktailViewModel.Cocktails = bar.BarCocktails.Select(bc => bc.Cocktail.MapToViewModel()).ToList();
            try
            {
                model.BarViewHtmlString = await this._formattingService.RenderViewToStringAsync <CocktailsViewModel>("_BarMenuPartial", cocktailViewModel);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            var emails    = model.InvitationEmailAddresses.TrimEnd('x').Split(new char[] { 'x', ',' }, StringSplitOptions.None);
            var from      = "*****@*****.**";
            var body      = model.ToString();
            var subject   = "Event invitation";
            var viewAsPdf = this._formattingService.HtmlStringToPDF(model.BarViewHtmlString);

            bool mailsSent = await this._mailServices.SendEmailToGroup(from, emails, subject, body, viewAsPdf);

            // тука може да си добавите сървис, който да запазва ивента в базата. в момента нямам имплементиран такъв сървис, нито имам ентити за ивент, има само ивентвюмодел
            // може в джейсъна да сложите и още пропъртита за да има за всяка операция.



            // bool successfullyCreated = this.eventServices.CreateAsync(model);  => псевдо код как запазвате ивента в базата и ако е успешно може да върнете от сървиса тру, иначе фолс и
            // така може да пратите инфо в джейсъна за всичките неща - и за статуса на мейлите и за статуса на самия ивент

            return(Json(new { mailsSent = mailsSent /*, successfullyCreated = successfullyCreated*/ }));
        }