コード例 #1
0
        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);
        }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
        /// <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();
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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();
                }
            }
        }
コード例 #6
0
        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();
            }
        }