public static void Remover(int id) { Reserva reserva = new Reserva(); using (Uni7ReservasEntities context = new Uni7ReservasEntities()) { var reservas_ = from Reserva r in context.Reservas.Include("CategoriasEquipamentos") where r.Id == id select r; if (reservas_.Count() == 0) { throw new EntidadesException(EntityExcCode.RESERVAINEXISTENTE, id.ToString()); } reservas_.First().CategoriasEquipamentos.Clear(); context.SaveChanges(); context.Reservas.Remove(reservas_.First()); context.SaveChanges(); } }
public static Reserva ConsultarPorId(int id) { Reserva reserva = new Reserva(); using (Uni7ReservasEntities context = new Uni7ReservasEntities()) { var reservas_ = from Reserva r in context.Reservas.Include("Local") .Include("CategoriasEquipamentos").Include("Usuario") where r.Id == id select r; if (reservas_.Count() == 0) { throw new EntidadesException(EntityExcCode.RESERVAINEXISTENTE, id.ToString()); } reserva = reservas_.First(); } return(reserva); }
public static Reserva AtualizarObs(int id, string obs) { Reserva reserva = new Reserva(); using (Uni7ReservasEntities context = new Uni7ReservasEntities()) { var reservas_ = from Reserva r in context.Reservas where r.Id == id select r; if (reservas_.Count() == 0) { throw new EntidadesException(EntityExcCode.RESERVAINEXISTENTE, id.ToString()); } reservas_.First().Obs = obs; context.SaveChanges(); } return(reserva); }
public static Reserva AtualizarAvaliacao(int id, int satisfacao, string comentarioUsuario) { Reserva reserva = new Reserva(); using (Uni7ReservasEntities context = new Uni7ReservasEntities()) { var reservas_ = from Reserva r in context.Reservas where r.Id == id select r; if (reservas_.Count() == 0) { throw new EntidadesException(EntityExcCode.RESERVAINEXISTENTE, id.ToString()); } reservas_.First().ComentarioUsuario = comentarioUsuario; reservas_.First().Satisfacao = satisfacao; context.SaveChanges(); } return(reserva); }
public static void ReservarPeriodo(int idUsuario, DateTime dataDe, DateTime dataAte, string horario, string turno, int idLocal, string obs, int idCatEquipamento) { using (Uni7ReservasEntities context = new Uni7ReservasEntities()) { //Consulta usuário var usuario_ = from Usuario u in context.Usuarios where u.Id == idUsuario select u; if (usuario_.Count() == 0) { throw new EntidadesException(EntityExcCode.IDUSUARIONAOCADASTRADO, idUsuario.ToString()); } //Consulta local var local_ = from Local l in context.Locais.Include("RestricoesCategoriaEquipamento") where l.Id == idLocal select l; if (local_.Count() == 0) { throw new EntidadesException(EntityExcCode.LOCALINEXISTENTE, idLocal.ToString()); } else if (!local_.First().Reservavel&& idCatEquipamento == 0) { throw new EntidadesException(EntityExcCode.EQUIPAMENTONECESSARIO, ""); } IEnumerable <CategoriaEquipamento> catequip_ = null; if (idCatEquipamento > 0) { //Consulta categoria do equipamento catequip_ = from CategoriaEquipamento ce in context.Categorias where ce.Id == idCatEquipamento select ce; if (catequip_.Count() == 0) { throw new EntidadesException(EntityExcCode.CATEGORIAINEXISTENTE, idCatEquipamento.ToString()); } if (local_.First().RestricoesCategoriaEquipamento.Contains(catequip_.First())) { throw new EntidadesException(EntityExcCode.RESTRICAOLOCALEQUIPAMENTO, catequip_.First().Nome); } } DateTime data = dataDe; if (dataDe > dataAte) { throw new EntidadesException(EntityExcCode.DATASINVALIDAS, ""); } List <Reserva> reservas = new List <Reserva>(); while (data <= dataAte) { //Verifica disponibilidade do local var reservalocal_ = from Reserva r in context.Reservas where r.Data.Equals(data) && r.Turno.Equals(turno) && r.Horario.Equals(horario) && r.Local.Id == idLocal select new { localId = r.Local.Id, usuarioId = r.Usuario.Id, r.Usuario.Nome }; if (reservalocal_.Count() > 0) { if (reservalocal_.First().usuarioId == idUsuario) { throw new EntidadesException(EntityExcCode.LOCALINDISPONIVELPROPRIOUSUARIO, data.ToString("ddMMyyyy")); } else { throw new EntidadesException(EntityExcCode.LOCALINDISPONIVEL, reservalocal_.First().Nome + " " + data.ToString("ddMMyyyy")); } } //Verifica disponibilidade do equipamento if (idCatEquipamento > 0) { var cat_ = from CategoriaEquipamento ce in context.Categorias.Include("Equipamentos") where ce.Id == idCatEquipamento select ce; CategoriaEquipamento catequip = cat_.First(); //Reservas daquela categoria var reservaequip_ = from Reserva r in context.Reservas where r.Data.Equals(data) && r.Turno.Equals(turno) && r.Horario.Equals(horario) && ((from CategoriaEquipamento cer in r.CategoriasEquipamentos where cer.Id == idCatEquipamento select cer).Count() > 0) select r; if (reservaequip_.Count() >= catequip.Equipamentos.Where(e => e.Disponivel).Count()) { throw new EntidadesException(EntityExcCode.EQUIPAMENTOINDISPONIVEL, data.ToString("ddMMyyyy")); } } //Realiza a reserva Reserva reserva = new Reserva(); reserva.Data = data; reserva.ReservadoEm = DateTime.Now; reserva.Turno = turno; reserva.Horario = horario; reserva.Obs = obs; reserva.Usuario = usuario_.First(); reserva.Local = local_.First(); if (idCatEquipamento > 0) { reserva.CategoriasEquipamentos.Add(catequip_.First()); } reservas.Add(reserva); //Passa para próximo dia data.AddDays(7); } foreach (Reserva r in reservas) { context.Reservas.Add(r); context.SaveChanges(); } } }
public static void Reservar(int idUsuario, DateTime data, string horario, string turno, int idLocal, string obs, int idCatEquipamento) { using (Uni7ReservasEntities context = new Uni7ReservasEntities()) { //Verifica data DateTime limite = data.AddMinutes(Util.HorarioParaHora(horario, turno) - 60); if (DateTime.Now > limite) { throw new EntidadesException(EntityExcCode.DATAPASSADA, data.ToShortDateString() + " " + turno + " " + horario); } //Consulta usuário var usuario_ = from Usuario u in context.Usuarios where u.Id == idUsuario select u; if (usuario_.Count() == 0) { throw new EntidadesException(EntityExcCode.IDUSUARIONAOCADASTRADO, idUsuario.ToString()); } //Consulta local var local_ = from Local l in context.Locais.Include("RestricoesCategoriaEquipamento") where l.Id == idLocal select l; if (local_.Count() == 0) { throw new EntidadesException(EntityExcCode.LOCALINEXISTENTE, idLocal.ToString()); } else if (!local_.First().Reservavel&& idCatEquipamento == 0) { throw new EntidadesException(EntityExcCode.EQUIPAMENTONECESSARIO, ""); } //Verifica disponibilidade do local var reserva_ = from Reserva r in context.Reservas where r.Data.Equals(data) && r.Turno.Equals(turno) && r.Horario.Equals(horario) && r.Local.Id == idLocal select new { localId = r.Local.Id, usuarioId = r.Usuario.Id, r.Usuario.Nome }; if (reserva_.Count() > 0) { if (reserva_.First().usuarioId == idUsuario) { throw new EntidadesException(EntityExcCode.LOCALINDISPONIVELPROPRIOUSUARIO, ""); } else { throw new EntidadesException(EntityExcCode.LOCALINDISPONIVEL, reserva_.First().Nome); } } IEnumerable <CategoriaEquipamento> catequip_ = null; if (idCatEquipamento > 0) { //Consulta categoria do equipamento 1 catequip_ = from CategoriaEquipamento ce in context.Categorias.Include("Equipamentos") where ce.Id == idCatEquipamento select ce; if (catequip_.Count() == 0) { throw new EntidadesException(EntityExcCode.CATEGORIAINEXISTENTE, idCatEquipamento.ToString()); } CategoriaEquipamento catequip = catequip_.First(); //Verifica restrições do equipamento if (local_.First().RestricoesCategoriaEquipamento.Contains(catequip_.First())) { throw new EntidadesException(EntityExcCode.RESTRICAOLOCALEQUIPAMENTO, catequip.Nome); } //Reservas daquela categoria var reservaequip_ = from Reserva r in context.Reservas where r.Data.Equals(data) && r.Turno.Equals(turno) && r.Horario.Equals(horario) && ((from CategoriaEquipamento cer in r.CategoriasEquipamentos where cer.Id == idCatEquipamento select cer).Count() > 0) select r; if (reservaequip_.Count() >= catequip.Equipamentos.Where(e => e.Disponivel).Count()) { throw new EntidadesException(EntityExcCode.EQUIPAMENTOINDISPONIVEL, ""); } } //Realiza a reserva Reserva reserva = new Reserva(); reserva.Data = data; reserva.ReservadoEm = DateTime.Now; reserva.Turno = turno; reserva.Horario = horario; reserva.Obs = obs; reserva.Usuario = usuario_.First(); reserva.Local = local_.First(); if (idCatEquipamento > 0) { reserva.CategoriasEquipamentos.Add(catequip_.First()); } context.Reservas.Add(reserva); context.SaveChanges(); } }