Beispiel #1
0
        /*
         * return success
         */

        public void Execute(Parque p)
        {
            using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
            {
                EnsureContext();
                _context.EnlistTransaction();
                using (IDbCommand cmd = _context.CreateCommand())
                {
                    var parqueMapper           = new ParqueMapper(_context);
                    var alojamentoMapper       = new AlojamentoMapper(_context);
                    var estadaMapper           = new EstadaMapper(_context);
                    var estadaAlojamentoMapper = new EstadaAlojamentoMapper(_context);
                    var estadaHóspedeMapper    = new EstadaHóspedeMapper(_context);
                    var hospedeMapper          = new HóspedeMapper(_context);

                    var alojamentos = alojamentoMapper.ReadAll().Where(a => a.Parque.Nome.Equals(p.Nome));

                    //find relations of alojamento-estada
                    var estadaAlojamentos = estadaAlojamentoMapper.ReadAll()
                                            .Where(ea => alojamentos.Any(a => a.Nome.Equals(ea.Alojamento.Nome)));

                    var estadaHóspedes = estadaHóspedeMapper.ReadAll()
                                         .Where(eh => estadaAlojamentos.Any(al => al.Estada.Id == eh.Estada.Id));

                    var hospedes = estadaHóspedes.Select(eh => eh.Hóspede);


                    foreach (var estadaHóspede in estadaHóspedes)
                    {
                        estadaHóspedeMapper.Delete(estadaHóspede);
                    }


                    foreach (var ea in estadaAlojamentos)
                    {
                        estadaAlojamentoMapper.Delete(ea);
                        estadaMapper.Delete(ea.Estada);
                    }
                    foreach (var alojamento in alojamentos)
                    {
                        alojamentoMapper.Delete(alojamento);
                    }
                    //alojamentos deleted

                    var hospedesSemEstada =
                        hospedes.Where(h => estadaHóspedeMapper.ReadAll().All(eh => eh.Hóspede.Nif != h.Nif));

                    foreach (var e in hospedesSemEstada)
                    {
                        hospedeMapper.Delete(e);
                    }

                    parqueMapper.Delete(p);
                }


                ts.Complete();
            }
        }
        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 ApagarParqueEAssociaçoesTest()
        {
            using (var ctx = new Context(_connectionString))
            {
                EstadaMapper     estadaMapper     = new EstadaMapper(ctx);
                ParqueMapper     parqueMap        = new ParqueMapper(ctx);
                AlojamentoMapper alojamentoMapper = new AlojamentoMapper(ctx);
                var estadaAlojamentoMapper        = new EstadaAlojamentoMapper(ctx);
                try
                {
                    var estada = new Estada
                    {
                        DataInicio = new DateTime(2007, 3, 1),
                        DataFim    = new DateTime(2017, 3, 1),
                        Id         = 25,
                        NifHospede = 0
                    };


                    estada = estadaMapper.Create(estada);


                    /*
                     * CREATE PARQUE
                     */
                    Parque p = new Parque();
                    p.Nome     = "brasil";
                    p.Email    = "*****@*****.**";
                    p.Morada   = "Rio de Janeiro, Rua Junqueiro 367";
                    p.Estrelas = 5;


                    p = parqueMap.Create(p);

                    /*
                     * Alojamento
                     */


                    Alojamento c = new Alojamento
                    {
                        PreçoBase   = 50,
                        Nome        = "OI",
                        Descrição   = "sem descricao",
                        Localizaçao = "Brasil",
                        MaxPessoas  = 20,
                        Parque      = p
                    };


                    c = alojamentoMapper.Create(c);


                    EstadaAlojamento estadaAlojamento = new EstadaAlojamento()
                    {
                        Estada     = estada,
                        Alojamento = c,
                        Descrição  = "OLA",
                        PreçoBase  = 1234
                    };



                    estadaAlojamento = estadaAlojamentoMapper.Create(estadaAlojamento);


                    var apagrParque = new ApagarParqueEAssociaçoes(ctx);
                    apagrParque.Execute(p);

                    var parqueExists = parqueMap.ReadAll().Any(parque => parque.Nome.Equals(p.Nome));
                    Assert.AreEqual(false, parqueExists);

                    var alojamentoExists = alojamentoMapper.ReadAll().Any(a => a.Nome.Equals(c.Nome));
                    Assert.AreEqual(false, alojamentoExists);

                    var estadaExists = estadaMapper.ReadAll().Any(e => e.Id == estada.Id);
                    Assert.AreEqual(false, estadaExists);
                }
                catch (Exception exception)
                {
                    Console.WriteLine(exception);


                    foreach (var e in estadaAlojamentoMapper.ReadAll())
                    {
                        estadaAlojamentoMapper.Delete(e);
                    }

                    foreach (var e in estadaMapper.ReadAll())
                    {
                        estadaMapper.Delete(e);
                    }


                    foreach (var alojamento in alojamentoMapper.ReadAll())
                    {
                        alojamentoMapper.Delete(alojamento);
                    }


                    foreach (var parque in parqueMap.ReadAll())
                    {
                        parqueMap.Delete(parque);
                    }

                    throw;
                }
            }
        }
Beispiel #4
0
        public void InsertTest()
        {
            using (Context ctx = new Context(_connectionString))
            {
                var estada = new Estada
                {
                    DataInicio = new DateTime(2007, 3, 1),
                    DataFim    = new DateTime(2017, 3, 1),
                    Id         = 25,
                    NifHospede = 0
                };

                EstadaMapper estadaMapper = new EstadaMapper(ctx);
                estada = estadaMapper.Create(estada);


                /*
                 * CREATE PARQUE
                 */
                Parque p = new Parque();
                p.Nome     = "brasil";
                p.Email    = "*****@*****.**";
                p.Morada   = "Rio de Janeiro, Rua Junqueiro 367";
                p.Estrelas = 5;

                ParqueMapper parqueMap = new ParqueMapper(ctx);
                p = parqueMap.Create(p);

                /*
                 * Alojamento
                 */


                Alojamento c = new Alojamento();
                c.PreçoBase   = 50;
                c.Nome        = "OI";
                c.Descrição   = "sem descricao";
                c.Localizaçao = "Brasil";
                c.MaxPessoas  = 20;
                c.Parque      = p;

                AlojamentoMapper alojamentoMapper = new AlojamentoMapper(ctx);
                c = alojamentoMapper.Create(c);



                EstadaAlojamento estadaAlojamento = new EstadaAlojamento()
                {
                    Estada     = estada,
                    Alojamento = c,
                    Descrição  = "OLA",
                    PreçoBase  = 1234
                };

                var estadaAlojamentoMapper = new EstadaAlojamentoMapper(ctx);

                estadaAlojamento = estadaAlojamentoMapper.Create(estadaAlojamento);

                var ee = estadaAlojamentoMapper.Read(new KeyValuePair <string, int>(estadaAlojamento.Alojamento.Nome, estadaAlojamento.Estada.Id));

                Assert.IsNotNull(ee);

                Assert.AreEqual(ee.Alojamento.Nome, estadaAlojamento.Alojamento.Nome);
                Assert.AreEqual(ee.Estada.Id, estadaAlojamento.Estada.Id);



                foreach (var e in estadaAlojamentoMapper.ReadAll())
                {
                    estadaAlojamentoMapper.Delete(e);
                }

                foreach (var e in estadaMapper.ReadAll())
                {
                    estadaMapper.Delete(estada);
                }


                foreach (var alojamento in alojamentoMapper.ReadAll())
                {
                    alojamentoMapper.Delete(alojamento);
                }


                foreach (var parque in parqueMap.ReadAll())
                {
                    parqueMap.Delete(parque);
                }
            }
        }