public static void ObterTotalPagoPorHóspede(Context ctx) { Console.WriteLine("Insira o nome do Parque"); var nomeParque = Console.ReadLine(); Console.WriteLine("Insira a Data Inicial (ANO-MÊS-DIA)"); var dataInicial = Convert.ToDateTime(Console.ReadLine()); Console.WriteLine("Insira a Data Final (ANO-MÊS-DIA)"); var dataFinal = Convert.ToDateTime(Console.ReadLine()); var estadasMapper = new EstadaMapper(ctx); var estadaAlojamentoMapper = new EstadaAlojamentoMapper(ctx); var alojamentosMapper = new AlojamentoMapper(ctx); var extraEstadasMapper = new ExtraEstadaMapper(ctx); var estadaHospedeMapper = new EstadaHóspedeMapper(ctx); var idEstada = from estada in estadasMapper.ReadAll() where estada.DataFim <= dataFinal && estada.DataInicio >= dataInicial select estada.Id;//Estadas para a data inserida; var estadaAlojamentos = from alojamento in estadaAlojamentoMapper.ReadAll() where idEstada.Contains(alojamento.Estada.Id) select alojamento; var countALojamentos = (from alojameno in alojamentosMapper.ReadAll() where alojameno.Parque.Nome == nomeParque select alojameno).Count(); var extraEstadas = from extraEstada in extraEstadasMapper.ReadAll() where estadaAlojamentos.Select(e => e.Estada.Id).Contains(extraEstada.Estada.Id) select extraEstada; var estrasAlojamento = from extrasAlojamento in extraEstadas where extrasAlojamento.Extra.Tipo.Equals("Alojamento") select extrasAlojamento; var extrasPreços = (from estras in estrasAlojamento select estras.PreçoDia); var somaDosPreçosDosExtrasAlojamento = extrasPreços.Any() ? extrasPreços.Sum() : 0; var numeroHospedes = (from estadaHospede in estadaHospedeMapper.ReadAll() where estadaAlojamentos.Select(e => e.Estada.Id).Contains(estadaHospede.Estada.Id) select estadaHospede.Hóspede).Count(); var extraHospedes = from extras in extraEstadas where extras.Extra.Tipo.Equals("Hóspede") select extras.Extra.PreçoDia; var preçoTotal = (extraHospedes.Any() ? extraHospedes.Sum() : 0) + somaDosPreçosDosExtrasAlojamento / (numeroHospedes != 0 ? numeroHospedes : 1); Console.WriteLine("O preço total pago por hóspede é {0}", preçoTotal); }
public void UpdateExtraTest() { using (Context ctx = new Context(connectionString)) { var extra = new Extra { Tipo = "alojamento", Id = 25, Descriçao = "muito bom", PreçoDia = 25 }; var extraMapper = new ExtraMapper(ctx); extra = extraMapper.Create(extra); var estada = new Estada { DataInicio = new DateTime(2007, 3, 1), DataFim = new DateTime(2017, 3, 1), Id = 25, NifHospede = 0 }; //TODO EstadaMapper estadaMapper = new EstadaMapper(ctx); estada = estadaMapper.Create(estada); ExtraEstada extraEstada = new ExtraEstada { PreçoDia = 12, Descrição = "Pessimo", Estada = estada, Extra = extra }; var extraEstadaMapper = new ExtraEstadaMapper(ctx); extraEstada = extraEstadaMapper.Create(extraEstada); var ee = extraEstadaMapper.Read(new KeyValuePair <int, int>(extraEstada.Extra.Id, extraEstada.Estada.Id)); Assert.IsNotNull(ee); Assert.AreEqual(ee.Extra.Id, extraEstada.Extra.Id); Assert.AreEqual(ee.Estada.Id, extraEstada.Estada.Id); Assert.AreEqual(ee.PreçoDia, extraEstada.PreçoDia); Assert.AreEqual(ee.Descrição, extraEstada.Descrição); var extraEstadaPreçoDia = 32; extraEstada.PreçoDia = extraEstadaPreçoDia; var s = extraEstada.Descrição = "Nada de mais"; ee = extraEstadaMapper.Update(extraEstada); Assert.AreEqual(ee.Extra.Id, extraEstada.Extra.Id); Assert.AreEqual(ee.Estada.Id, extraEstada.Estada.Id); Assert.AreEqual(ee.PreçoDia, extraEstada.PreçoDia); Assert.AreEqual(ee.Descrição, extraEstada.Descrição); Assert.AreEqual(ee.PreçoDia, extraEstadaPreçoDia); Assert.AreEqual(ee.Descrição, s); foreach (var e in extraEstadaMapper.ReadAll()) { extraEstadaMapper.Delete(e); } foreach (var e in estadaMapper.ReadAll()) { estadaMapper.Delete(estada); } foreach (var e in extraMapper.ReadAll()) { extraMapper.Delete(e); } } }