public PedidoViewModel Add(PedidoViewModel pedidoViewModel) { //string pedidoViewModel = "Manhã, 1, 2, 3, 3, 3"; if (string.IsNullOrEmpty(pedidoViewModel.Entrada)) { pedidoViewModel.Saida = "erro"; pedidoViewModel.Errors.Add(new PedidoErrorViewModel() { Message = "Pedido não pode ser vazio ", Name = "Entrada" }); pedidoViewModel.HistoricoPedidos = _pedidoRepository.GetAll(); return(pedidoViewModel); } var order = pedidoViewModel.Entrada.Split(","); //verificar se período existe; var entradaPeriodoDescricao = order[0].ToLower(); //buscando o periodo igual ao informado var periodo = _periodoRepository.GetAll().FirstOrDefault(x => x.Descricao.ToLower() == entradaPeriodoDescricao); if (periodo == null) { pedidoViewModel.Saida = "erro"; pedidoViewModel.Errors.Add(new PedidoErrorViewModel() { Message = "Perido Invalido", Name = "Entrada" }); pedidoViewModel.HistoricoPedidos = _pedidoRepository.GetAll(); return(pedidoViewModel); } //var digitos = string.Join("", order.Skip(1)).ToCharArray(); //if (!digitos.All(x=> char.IsDigit(x))) //{ // pedidoViewModel.Saida = "erro"; // pedidoViewModel.Errors.Add(new PedidoErrorViewModel() { Message = "Perido Invalido", Name = "Entrada" }); // pedidoViewModel.HistoricoPedidos = _pedidoRepository.GetAll(); // return pedidoViewModel; //} var itens = order.Skip(1).Select(x => Convert.ToInt32(x)); if (!itens.Any()) { pedidoViewModel.Saida = "erro"; pedidoViewModel.Errors.Add(new PedidoErrorViewModel() { Message = "Adicione ao menos um item", Name = "Entrada" }); pedidoViewModel.HistoricoPedidos = _pedidoRepository.GetAll(); return(pedidoViewModel); } var itensCadastrados = _itemPratoRepository.GetAll(); int itemNaoEncontrado = itens.FirstOrDefault(x => !itensCadastrados.Any(y => y.Id == x)); if (itemNaoEncontrado > 0) { pedidoViewModel.Saida = "erro"; pedidoViewModel.Errors.Add(new PedidoErrorViewModel() { Message = $"Item {itemNaoEncontrado} não encontrado.", Name = "Entrada" }); pedidoViewModel.HistoricoPedidos = _pedidoRepository.GetAll(); return(pedidoViewModel); } var(success, saida) = GetSaidaPedido(periodo, itens); pedidoViewModel.Saida = saida; if (success) { _pedidoRepository.Add(new Pedido { DataPedido = DateTime.Now, Entrada = pedidoViewModel.Entrada, Saida = pedidoViewModel.Saida }); } else { pedidoViewModel.Errors.Add(new PedidoErrorViewModel() { Name = "Entrada", Message = "Itens não atende os requisitos" }); } pedidoViewModel.HistoricoPedidos = _pedidoRepository.GetAll(); return(pedidoViewModel); }