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);
        }
Exemple #2
0
        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);
                }
            }
        }