예제 #1
0
        public ActionResult Subscribe(SubscriptionModel model)
        {
            if (ModelState.IsValid)
            {
                SubscriptionRequest  request  = new SubscriptionRequest();
                SubscriptionResponse response = new SubscriptionResponse();

                Subscription subscription = new Subscription();
                subscription.EmailAddress     = model.EmailAddress;
                subscription.SubscriptionDate = DateTime.Now;
                subscription.MarketingSource  = MapMarketingSource(model.MarketingSource);
                subscription.Other            = model.Other;
                subscription.Reason           = model.Reason;

                request.Subscription = subscription;

                try
                {
                    response = service.GetSubscription(request);
                    if (response.Status.Equals(StatusCode.RecordNotFound))
                    {
                        response = service.Subscribe(request);
                    }

                    if (response.Status != StatusCode.Success)
                    {
                        model.Subscribed = false;
                        model.Message    = response.Message;
                        return(View("Index", model));
                    }

                    model.Subscribed = true;
                    model.Message    = response.Message;
                }
                catch (Exception ex)
                {
                    Log(ex.Message, ex.StackTrace);
                    return(View("Error"));
                }
            }

            return(View("Index", model));
        }
        public async Task <ActionResult> Subscribe([FromBody] Subscription subscription)
        {
            _logger.ForContext <NewsletterController>().Information("Subscribe(subscription: {@Subscription})", subscription);;

            try
            {
                ValidationErrorList validationErrors = await _newsletterService.ValidateSubscription(subscription);

                if (!validationErrors.isValid)
                {
                    return(new JsonResult(new ApiResponse <bool>(false, validationErrors.Errors)));
                }

                return(new JsonResult(await _newsletterService.Subscribe(subscription)));
            }
            catch (Exception ex)
            {
                _logger.ForContext <NewsletterController>().Error($"Something went wrong: {ex}");
                return(StatusCode(500, "Internal server error"));
            }
        }
예제 #3
0
 public IActionResult Subscribe(NewsletterDto model)
 {
     _newsletterService.Subscribe(model);
     return(Ok());
 }