private bool CamiaoValidoNaoCompleto(EncomendaFrita encomenda, PlanoFrito plano) { if (plano.CapacidadePaletes == plano.Ocupadas) { return(false); } return(CamiaoValido(encomenda, plano)); }
private bool isValidPlan(EncomendaFrita encomenda, PlanoFrito plano) { if (plano.Preco <= 0) { return(false); } if (plano.Ocupadas == plano.CapacidadePaletes) { return(false); } //Tem espaço para esta encomenda? if (plano.CapacidadePaletes - plano.Ocupadas < encomenda.Paletes) { return(false); } //Preciso e tenho congelados? if (!plano.Congelados && encomenda.Tipo == Tipo.Congelado) { return(false); } //Preciso e tenho Scos? if (!plano.Secos && encomenda.Tipo == Tipo.Seco) { return(false); } //Preciso e tenho frescos? if (!plano.Frescos && encomenda.Tipo == Tipo.Frio) { return(false); } //Faço entregas para a zona do cliente? if (plano.Zona != encomenda.Encomenda.Cliente1.Zona && plano.Zona != encomenda.Encomenda.Cliente1.Opcao_zona_2 && plano.Zona != encomenda.Encomenda.Cliente1.Opcao_zona_3) { return(false); } //Camiao com ridelle if (!plano.Ridelle && encomenda.Ridelle) { return(false); } //Camiao com descarga manual if (!plano.EntradaSemAcesso && encomenda.SemAcesso) { return(false); } /* * if (plano.CapacidadePaletes == 15 && plano.Ocupadas < 12) * return false; * if (plano.CapacidadePaletes == 8 && (plano.Ocupadas + encomenda.Paletes) < 6) * return false;*/ return(true); }
private bool CamiaoValido(EncomendaFrita encomenda, PlanoFrito plano) { if (plano.CapacidadePaletes == 5 && plano.Ocupadas < 3) { return(false); } if (plano.CapacidadePaletes == 11 && plano.Ocupadas < 8) { return(false); } if (plano.CapacidadePaletes == 18 && plano.Ocupadas < 12) { return(false); } if (plano.CapacidadePaletes == 32 && plano.Ocupadas < 21) { return(false); } if (!plano.Congelados && encomenda.Tipo == Tipo.Congelado) { return(false); } //Preciso e tenho Scos? if (!plano.Secos && encomenda.Tipo == Tipo.Seco) { return(false); } //Preciso e tenho frescos? if (!plano.Frescos && encomenda.Tipo == Tipo.Frio) { return(false); } //Faço entregas para a zona do cliente? if (plano.Zona != encomenda.Encomenda.Cliente1.Zona && plano.Zona != encomenda.Encomenda.Cliente1.Opcao_zona_2 && plano.Zona != encomenda.Encomenda.Cliente1.Opcao_zona_3) { return(false); } return(true); }
public PlanoFrito(PlanoFrito x) { this.Ocupadas = x.Ocupadas; this.Encomendas = new List <EncomendaFrita>(); this.Encomendas.AddRange(x.Encomendas); this.PlanoSemanal = x.PlanoSemanal; this.Preco = x.Preco; this.Congelados = x.Congelados; this.Secos = x.Secos; this.Frescos = x.Frescos; this.Zona = x.Zona; this.EntradaSemAcesso = x.EntradaSemAcesso; this.Ridelle = x.Ridelle; this.CapacidadePaletes = x.CapacidadePaletes; this.Transportadora = x.Transportadora; this.Estado = x.Estado; this.Peso = x.Peso; }
private PlanoFrito BestPlanFor(EncomendaFrita encomenda, List <PlanoFrito> plans) { var alreadyUsed = plans.Where(x => x.Ocupadas > 0).ToList(); var minPrice = double.MaxValue; PlanoFrito plan = null; //Already used for (int i = 0; i < alreadyUsed.Count; i++) { var plano = alreadyUsed[i]; if (!isValidPlan(encomenda, plano)) { continue; } if (minPrice > plano.Preco) { minPrice = plano.Preco; plan = plano; } } if (plan != null) { return(plan); } //Pick from rest var notalreadyUsed = plans.Where(x => x.Ocupadas == 0).ToList(); for (int i = 0; i < notalreadyUsed.Count; i++) { var plano = notalreadyUsed[i]; if (!isValidPlan(encomenda, plano)) { continue; } if (minPrice > plano.Preco) { minPrice = plano.Preco; plan = plano; } } return(plan); }