public HttpResponseMessage Post([FromBody] ShareLinkInputModel model) { if (!ModelState.IsValid) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Provided data is invalid"); } var shareLink = new ShareLink(model.Link, model.Topic, model.EmailOfSharer, model.EmailsOfReceivers); _bus.Send(shareLink); var response = Request.CreateResponse(HttpStatusCode.Created); return response; }
public void Handle(ShareLink cmd) { var linkId = new LinkId(cmd.Link); var link = _repository.GetById(linkId); if (link == null) { var url = new Uri(cmd.Link); link = new Link(url); } var topic = new Topic(cmd.Topic); var emailsOfReceivers = cmd.EmailsOfReceivers.Select(x => new Receiver(new EmailAddress(x))).ToArray(); var receivers = new ListOfReceivers(emailsOfReceivers); var sharer = new Sharer(new EmailAddress(cmd.EmailOfSharer)); link.Share(topic, sharer, receivers); _repository.Save(link); }