Example #1
0
        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);
        }
Example #2
0
        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!"));
        }