public async Task <CustomResponse> Delete(string unsubscribeToken) { try { string email = _repository.GetSubscription(unsubscribeToken).Result.Email; _repository.Unsubscribe(unsubscribeToken); await _unitOfWork.CompleteAsync(); new EmailSender().SendUnsubscribeConfirmation(email); return(CustomResponse.CreateCustomResponse(200, "Success")); } catch (Exception ex) { return(CustomResponse.CreateCustomResponse(500, "Error" + ex.Message)); } }
public async Task <CustomResponse> Post([FromBody] SubscriptionResource subscriptionResource) { try { if (!EmailValidator.IsValidEmail(subscriptionResource.Email)) { return(CustomResponse.CreateCustomResponse(400, "Invalid Email Address")); } if (!ModelState.IsValid) { return(CustomResponse.CreateCustomResponse(400, "Invalid data")); } if (_repository.SubscriptionExist(subscriptionResource.Email)) { return(CustomResponse.CreateCustomResponse(409, "Email already exist")); } var subscription = _mapper.Map <SubscriptionResource, Subscription>(subscriptionResource); subscription.SubscribeDate = DateTime.Now; subscription.UniqueToken = Token.GetToken(subscription.Email); _repository.Subscribe(subscription); await _unitOfWork.CompleteAsync(); subscription = _repository.GetSubscription(subscription.Id).Result; string[] topics = subscription.Topics.Select(t => t.Topic.Name).ToArray(); new EmailSender().SendConfirmation(subscription.Email, subscription.UniqueToken, topics); return(CustomResponse.CreateCustomResponseWithData(200, "Success", subscription)); } catch (Exception ex) { return(CustomResponse.CreateCustomResponse(500, "Error" + ex.Message)); } }