public async Task <IActionResult> GetById(string id) { var entity = await suggestionApp.GetAsync(id); if (entity.IsNull()) { return(NotFound()); } var model = SuggestionModel.ToModel(entity); var urlHelper = urlHelperFactory.GetUrlHelper(ControllerContext); var getByIdlink = GetSuggestionByIdLink(urlHelper, model.Id, true); var deleteLink = DeleteSuggestionLink(urlHelper, model.Id); var updateLink = UpdateSuggestionLink(urlHelper, model.Id); model.Links = new List <Link> { getByIdlink, updateLink, deleteLink }; return(Ok(model)); }
public async Task <IActionResult> Create([FromBody] SuggestionModel suggestion) { suggestion.IsNull().Throw <InvalidParameterException>(string.Format(Messages.CannotBeNull, "suggestion")); var entity = await suggestionApp.SaveAsync(suggestion.ToDomain()); var result = SuggestionModel.ToModel(entity); var urlHelper = urlHelperFactory.GetUrlHelper(ControllerContext); var getByIdlink = GetSuggestionByIdLink(urlHelper, result.Id); var deleteLink = DeleteSuggestionLink(urlHelper, result.Id); var updateLink = UpdateSuggestionLink(urlHelper, result.Id); result.Links = new List <Link> { getByIdlink, updateLink, deleteLink }; return(new CreatedResult(getByIdlink.Href, result)); }
public async Task <IActionResult> GetAll(int offset = 0, int limit = 100) { long totalCount = 0; var totalPages = 0; var routeName = "GetAllSuggestions"; var pagedList = await suggestionApp.GetAllAsync(offset, limit); if (pagedList.IsNotNull() && pagedList.Items.IsNotNull() && pagedList.Items.Count > 0) { totalCount = pagedList.Total; totalPages = (int)Math.Ceiling((double)totalCount / limit); } var urlHelper = urlHelperFactory.GetUrlHelper(ControllerContext); var prevLink = offset > 0 ? urlHelper.Link(routeName, new { offset = limit > offset ? 0 : offset - limit, limit = limit }) : string.Empty; var nextLink = offset < totalCount - limit ? urlHelper.Link(routeName, new { offset = offset + limit, limit = limit }) : string.Empty; var firstLink = offset > 0 ? urlHelper.Link(routeName, new { offset = 0, limit = limit }) : string.Empty; var lastLink = offset < totalCount - limit ? urlHelper.Link(routeName, new { offset = totalCount - limit, limit = limit }) : string.Empty; var links = new List <Link>(); if (prevLink.HasValue()) { links.Add(new Link { Href = prevLink, Method = Method.GET, Relation = "previous" }); } if (nextLink.HasValue()) { links.Add(new Link { Href = nextLink, Method = Method.GET, Relation = "next" }); } if (firstLink.HasValue()) { links.Add(new Link { Href = firstLink, Method = Method.GET, Relation = "first" }); } if (lastLink.HasValue()) { links.Add(new Link { Href = lastLink, Method = Method.GET, Relation = "last" }); } var result = new SuggestionsModel { TotalCount = pagedList.Total, TotalPages = totalPages, Links = links, Items = pagedList.Items.Select(e => SuggestionModel.ToModel(e)).ToArray() }; return(Ok(result)); }