public static int Cadastrar(string nome, string comentarioReserva) { CategoriaEquipamento categoria = null; if (nome == null || nome.Length == 0) { throw new EntidadesException(EntityExcCode.NOMECATEGORIAVAZIO, ""); } using (Uni7ReservasEntities context = new Uni7ReservasEntities()) { var categoria_ = from CategoriaEquipamento ce in context.Categorias where ce.Nome == nome select ce; if (categoria_.Count() > 0) { throw new EntidadesException(EntityExcCode.CATEGORIAJACADASTRADA, nome); } categoria = new CategoriaEquipamento(); categoria.Nome = nome; categoria.ComentarioReserva = comentarioReserva; context.Categorias.Add(categoria); context.SaveChanges(); } return(categoria.Id); }
public static void Atualizar(int idCategoria, string nome, string comentarioReserva) { if (nome == null || nome.Length == 0) { throw new EntidadesException(EntityExcCode.NOMECATEGORIAVAZIO, ""); } using (Uni7ReservasEntities context = new Uni7ReservasEntities()) { var categoria_ = from CategoriaEquipamento ce in context.Categorias where ce.Id == idCategoria select ce; if (categoria_.Count() == 0) { throw new EntidadesException(EntityExcCode.CATEGORIAINEXISTENTE, idCategoria.ToString()); } CategoriaEquipamento categoria = categoria_.First(); categoria.Nome = nome; categoria.ComentarioReserva = comentarioReserva; context.SaveChanges(); } }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <param name="verificaQtde">Verifica se existe algum dia/turno/horário com o limite de reservas daquele equipamento.</param> public static void Remover(int id, bool verificaQtde) { using (Uni7ReservasEntities context = new Uni7ReservasEntities()) { var equipamento_ = from Equipamento e in context.Equipamentos.Include("CategoriaEquipamento") where e.Id == id select e; if (equipamento_.Count() == 0) { throw new EntidadesException(EntityExcCode.EQUIPAMENTOINEXISTENTE, id.ToString()); } int idCategoria = equipamento_.First().CategoriaEquipamento.Id; if (verificaQtde) { var categoria_ = from CategoriaEquipamento ce in context.Categorias.Include("Equipamentos") where ce.Id == idCategoria select ce; if (categoria_.Count() == 0) { throw new EntidadesException(EntityExcCode.CATEGORIAINEXISTENTE, id.ToString()); } CategoriaEquipamento categoria = categoria_.First(); int qtdeCategoria = categoria_.First().Equipamentos.Where(e => e.Disponivel).Count(); DateTime ontem = DateTime.Today.AddDays(-1); var reservas_ = from Reserva r in context.Reservas where r.Data > ontem && (from c in r.CategoriasEquipamentos where c.Id == categoria.Id select c).Count() > 0 group r by new { r.Data, r.Turno, r.Horario } into g where g.Count() >= qtdeCategoria select new { Reserva = g.Key, Qtde = g.Count() }; if (reservas_.Count() > 0) { string info = ""; foreach (var r in reservas_) { info += String.Format("[{0} {1} {2}] ", r.Reserva.Data.ToShortDateString(), r.Reserva.Turno, r.Reserva.Horario); } throw new EntidadesException(EntityExcCode.EQUIPAMENTONOLIMITEDERESERVAS, info); } } context.Equipamentos.Remove(equipamento_.First()); context.SaveChanges(); } }
public static CategoriaEquipamento ConsultarCategoriaPorId(int idCategoria) { CategoriaEquipamento categoria = null; using (Uni7ReservasEntities context = new Uni7ReservasEntities()) { var categoria_ = from CategoriaEquipamento ce in context.Categorias where ce.Id == idCategoria select ce; if (categoria_.Count() == 0) { throw new EntidadesException(EntityExcCode.CATEGORIAINEXISTENTE, idCategoria.ToString()); } categoria = categoria_.First(); } return(categoria); }
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(); } }