public IActionResult Criar([FromServices] IRoteiroService service, [FromBody] CriarRoteiroCommand command)
 {
     return(Result(service.Criar(command)));
 }
Exemple #2
0
        public CommandResult Criar(CriarRoteiroCommand command)
        {
            try
            {
                command.Validate();
                if (command.Invalid)
                {
                    return(CommandResult.Invalid(command.Notifications.ToNotificationsString()));
                }


                var cliente = dataContext.Cliente.FirstOrDefault(x => x.Cod_Cliente == command.Cod_Cliente);

                if (cliente is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada("Cliente", command.Cod_Cliente)));
                }

                var turno = dataContext.Turno.FirstOrDefault(x => x.Cod_Turno == command.Cod_Turno);

                if (turno is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada("Turno", (int)command.Cod_Turno)));
                }

                var rota = dataContext.Rota.FirstOrDefault(x => x.Cod_Rota == command.Cod_Rota);

                if (rota is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada("Rota", command.Cod_Rota)));
                }

                var motorista = dataContext.Motorista.FirstOrDefault(x => x.Cod_Motorista == command.Cod_Motorista);

                if (motorista is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada("Motorista", command.Cod_Motorista)));
                }


                var material = dataContext.Material.FirstOrDefault(x => x.Cod_Material == command.Cod_Material);

                if (material is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada("Material", (int)command.Cod_Material)));
                }

                Roteiro roteiro = Roteiro.Criar(cliente,
                                                turno,
                                                rota,
                                                motorista,
                                                material,
                                                command.Segunda,
                                                command.Terca,
                                                command.Quarta,
                                                command.Quinta,
                                                command.Sexta,
                                                command.Sabado,
                                                command.Domingo,
                                                DataString.FromNullableString(command.Observacao));

                dataContext.Add(roteiro);
                dataContext.SaveChanges();

                return(CommandResult.Valid());
            }
            catch (Exception ex)
            {
                return(CommandResult.Invalid(ex.Message));
            }
        }