Ejemplo n.º 1
0
        public async Task <IActionResult> Update([FromRoute] string rosterId, [FromBody] UpdateRosterRequest request)
        {
            if (request == null)
            {
                return(ValidationProblem());
            }

            var rosterAccessModel = await _rosterAccessService.GetRosterAccessAsync(GetBy.RosterId, HttpContext.GetUserId(), rosterId);

            if (rosterAccessModel == null)
            {
                return(CreateErrorResponse(Status.Forbidden));
            }

            if (!rosterAccessModel.IsOwner)
            {
                if (!rosterAccessModel.IsModerator)
                {
                    return(CreateErrorResponse(Status.Forbidden));
                }
            }

            var roster = await _rosterService.GetRosterByIdAsync(rosterId);

            if (roster is null)
            {
                return(NotFound());
            }

            roster.Name        = request.Name;
            roster.Description = request.Description;

            await _rosterService.UpdateRosterAsync(roster);

            return(Ok(new Response <RosterResponse>(_mapper.Map <RosterResponse>(roster))));
        }