public override async Task Remove(Desafio obj) { var questoesDesafio = await _questaoService.ObterQuestoesDesafio(obj.Id); if (questoesDesafio.Count() > 0) { await _questaoService.RemoveInScale(questoesDesafio); } await base.Remove(obj); }
public async Task <IActionResult> Atualizar(Guid id, DesafioUpdateRequest desafioUpdateRequest) { if (!ModelState.IsValid) { return(CustomResponse(ModelState)); } var desafio = await _desafioService.FindAsNoTracking(id); if (desafio == null) { return(NotFound("Desafio não encontrado")); } if (desafioUpdateRequest.Id != id) { NotificarErro("Id informado na rota não é o mesmo informado no payload"); return(CustomResponse()); } if (desafio.EmpresaId != EmpresaId) { return(Unauthorized("Você não possui permissão para atualizar este desafio")); } var cargo = await _cargoService.FindAsNoTracking(desafioUpdateRequest.CargoId); if (cargo == null) { return(NotFound("Cargo informado não foi encontrado")); } if (cargo.EmpresaId != EmpresaId) { return(Unauthorized("Você não tem permissão para cadastrar um desafio com o cargo informado")); } var desafioUpdate = _mapper.Map <Desafio>(desafioUpdateRequest); desafioUpdate.EmpresaId = EmpresaId; Guid[] idQuestoesAdicionadas = desafioUpdateRequest.Questoes.Where(q => q.Id != Guid.Empty).Select(q => q.Id).ToArray(); var questoesDeletadas = await _questaoService.ObterQuestoesDeletadas(id, idQuestoesAdicionadas); if (questoesDeletadas.Count() > 0) { await _questaoService.RemoveInScale(questoesDeletadas); } await _desafioService.Update(desafioUpdate); return(CustomResponse("Desafio atualizado com sucesso!")); }