示例#1
0
        public ActionResult Add(AuthorCreateVM model)
        {
            if (model == null)
            {
                return(View());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    authorLogic.Add(new Entities.Author()
                    {
                        FirstName = model.FirstName, LastName = model.LastName
                    });
                }
                catch (System.Exception e)
                {
                    if (e is DalException)
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError));
                    }
                    else
                    {
                        logger.Warning("BL", e);
                    }
                }
                logger.Info("Author was added", "Presentation layer, class AuthorController, method ActionResult Create(AuthorCreateVM)");
            }

            return(View(model));
        }
示例#2
0
        public IActionResult CreateAuthor([FromBody] AuthorCreateVM authorVM, [FromHeader(Name = "Accept")] string mediaType)
        {
            if (authorVM == null)
            {
                return(BadRequest());
            }
            if (!ModelState.IsValid)
            {
                return(new UnprocessableEntityObject(ModelState));
            }
            var author = Mapper.Map <Author>(authorVM);

            libraryRepository.AddAuthor(author);
            if (!libraryRepository.Save())
            {
                throw new Exception("Creating author failed to save");
            }
            var createdAuthor = Mapper.Map <AuthorVM>(author);

            if (mediaType == "application/vnd.marvin.hateoas+json")
            {
                var links = CreateAuthorLinks(createdAuthor.Id, null);
                var linkedResourceToReturn = createdAuthor.ShapeData(null)
                                             as IDictionary <string, object>;

                linkedResourceToReturn.Add("links", links);
                return(CreatedAtRoute("GetAuthor", new { id = linkedResourceToReturn["Id"] }, linkedResourceToReturn));
            }
            else
            {
                return(CreatedAtRoute("GetAuthor",
                                      new { id = createdAuthor.Id },
                                      createdAuthor));
            }
        }