Example #1
0
        public async Task <IActionResult> Post([FromBody] ColaboradorViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            //verificamos se o colaborador já existe

            if (_appDbContext.Colaboradores.Any(c => c.Matricula == model.Matricula))
            {
                return(BadRequest(Errors.AddErrorToModelState("colaborador_failure", "Colaborador com a matricula [" + model.Matricula + "] já está cadastrado", ModelState)));
            }


            //Convertemos nosso viewmodel para a entidade do colaborador
            var colaborador = new Colaborador()
            {
                Nome      = model.Nome,
                Matricula = model.Matricula,
                Funcao    = (TIPO_COLABORADOR)Enum.Parse(typeof(TIPO_COLABORADOR), model.Funcao),
            };

            //se o colaborador não for um coletor ele precisa de acesso ao sistema logo criamos uma credencia com a utilização do asp net core identity
            if (colaborador.Funcao != TIPO_COLABORADOR.COLETOR)
            {
                var login = new Login()
                {
                    UserName = model.Email
                };

                var result = await _userManager.CreateAsync(login, model.Senha);

                if (!result.Succeeded)
                {
                    return(new BadRequestObjectResult(Errors.AddErrorsToModelState(result, ModelState)));
                }

                colaborador.LoginId = login.Id;
            }

            //adiciona o objeto do contexto do banco e faz o comite das modificações para o banco de dados
            _appDbContext.Colaboradores.Add(colaborador);
            await _appDbContext.SaveChangesAsync();

            return(new OkObjectResult("Colaborador criado"));
        }
Example #2
0
        public async Task <IActionResult> Post([FromBody] VeiculoViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            //Convertemos nosso viewmodel para a entidade do colaborador
            var veiculo = new Veiculo()
            {
                Id            = model.Id,
                Marca         = model.Marca,
                Modelo        = model.Modelo,
                Identificador = model.Identificador,
                Placa         = model.Placa
            };


            //adiciona o objeto do contexto do banco e faz o comite das modificações para o banco de dados
            _dbContext.Veiculos.Add(veiculo);
            await _dbContext.SaveChangesAsync();

            return(new OkObjectResult("Veiculo criado"));
        }
Example #3
0
        public async Task <IActionResult> Post([FromBody] ApontamentoViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            //primeiro buscamos pelo apontamento inicial
            Apontamento apontamentoInicial = _dbContext.Apontamentos
                                             .OrderBy(a => a.DtAtualizacao)
                                             .Include(a => a.Veiculo)
                                             .Include(a => a.Apontamentos)
                                             .LastOrDefault(a => a.Tipo == TIPO_APONTAMENTO.INICIAL && a.VeiculoId == model.VeiculoId);

            //de acordo com o tipo de atividade precisamos fazer uma validação especifica sobre o objeto a ser gravado no banco
            var tipoApontamento = Enum.Parse <TIPO_APONTAMENTO>(model.Tipo);

            //somente apontamentos iniciais podem ter referencia nula para apontamento pai,
            if ((apontamentoInicial == null || apontamentoInicial.Apontamentos.Any(a => a.Tipo == TIPO_APONTAMENTO.KM_FINAL)) && tipoApontamento != TIPO_APONTAMENTO.INICIAL)
            {
                return(BadRequest(Errors.AddErrorToModelState("apontamento_failure", "Não existe uma atividade inicial em aberta para o veículo ", ModelState)));
            }

            //verifica se já existe um apontamento inicial em aberto, no caso sem o apontamento de km final
            //ou então um filho do apontamento inicial com o mesmo tipo do apontamento a ser criado.
            if (apontamentoInicial != null &&
                ((tipoApontamento == TIPO_APONTAMENTO.INICIAL && !apontamentoInicial.Apontamentos.Any(a => a.Tipo == TIPO_APONTAMENTO.KM_FINAL))
                 ||
                 apontamentoInicial.Apontamentos.Any(a => a.Tipo == tipoApontamento)))
            {
                return(BadRequest(Errors.AddErrorToModelState("apontamento_failure", "Já existe uma atividade [" + tipoApontamento.ToString() + "] em aberta para o veículo " + apontamentoInicial.Veiculo.Identificador, ModelState)));
            }

            //se não for um apontamento inicial devemos copiar os dados do pai para o filho
            if (apontamentoInicial != null && tipoApontamento != TIPO_APONTAMENTO.INICIAL)
            {
                model.Setor       = apontamentoInicial.Setor.ToString();
                model.VeiculoId   = apontamentoInicial.VeiculoId;
                model.MotoristaId = apontamentoInicial.MotoristaId;
                model.Coletor1Id  = apontamentoInicial.Coletor1Id;
                model.Coletor2Id  = apontamentoInicial.Coletor2Id;
                model.Coletor3Id  = apontamentoInicial.Coletor3Id;
            }

            //Convertemos nosso viewmodel para a entidade do colaborador
            var apontamento = new Apontamento()
            {
                DtAtualizacao        = DateTime.Now,
                AditionalInformation = model.AditionalInformation,
                Setor                = Enum.Parse <SETOR>(model.Setor),
                Tipo                 = tipoApontamento,
                VeiculoId            = model.VeiculoId,
                MotoristaId          = model.MotoristaId,
                Coletor1Id           = model.Coletor1Id,
                Coletor2Id           = model.Coletor2Id <= 0 ? null : (int?)model.Coletor2Id,
                Coletor3Id           = model.Coletor3Id <= 0 ? null : (int?)model.Coletor3Id,
                ApontamentoInicialId = tipoApontamento == TIPO_APONTAMENTO.INICIAL ? null : (int?)apontamentoInicial.Id
            };

            //adiciona o objeto do contexto do banco e faz o comite das modificações para o banco de dados
            _dbContext.Apontamentos.Add(apontamento);
            await _dbContext.SaveChangesAsync();

            return(new OkObjectResult("Apontamento criado"));
        }