/* * 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; } } }
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); } } }