public static string buscaMelhorHotel(List<Hotel> lstHotel, Cliente cliente) { int melhor = 0; int totalIgual = 0; for (int i = 0; i < lstHotel.Count; i++){ if (i == 0) melhor = i; else{ if (lstHotel[i].calularDiaria(cliente) < lstHotel[melhor].calularDiaria(cliente)) { melhor = i; } else if (lstHotel[i].calularDiaria(cliente) == lstHotel[melhor].calularDiaria(cliente)) { totalIgual++; } } } if (totalIgual == lstHotel.Count) { for (int i = 0; i < lstHotel.Count; i++) { if (lstHotel[i].Estrelas > lstHotel[melhor].Estrelas) melhor = i; } } return lstHotel[melhor].Nome; }
public float calularDiaria(Cliente cliente) { float valor = 0; foreach (var reserva in cliente.Reserva){ bool weekEnd = (reserva.Data.DayOfWeek == DayOfWeek.Saturday || reserva.Data.DayOfWeek == DayOfWeek.Sunday) ? true : false; var blackout = new Blockout(); blackout.Data = reserva.Data; var hasBlouckout = blackouts.Contains(blackout); var precoFiltrado = precos.Where(x => x.DiaSemana == (weekEnd ? "WEEKEND" :"WEEK")); var precoReserva = precoFiltrado.First(x => x.TipoCliente == (hasBlouckout ? "REGULAR" : cliente.Tipo)).Preco; valor += precoReserva; } return valor; }
static Cliente makeInput(string inputReserva) { int keyPipe = inputReserva.IndexOf(":"); string typeCliente = inputReserva.Substring(0, keyPipe).ToUpper().Trim(); inputReserva = inputReserva.Substring(keyPipe + 1, inputReserva.Length - keyPipe -1).Trim(); string[] lstDataReserva = inputReserva.Split(','); List<Reserva> lstReserva = new List<Reserva>(); foreach (var data in lstDataReserva){ var reserva = new Reserva(Convert.ToDateTime(data)); lstReserva.Add(reserva); } var cliente = new Cliente(); cliente.Reserva = lstReserva; cliente.Tipo = typeCliente; return cliente; }