public static int Cadastrar(string modelo, string serie, bool disponivel, int idCategoria)
        {
            Equipamento equipamento = null;

            if (modelo == null || modelo.Length == 0)
            {
                throw new EntidadesException(EntityExcCode.MODELOEQUIPAMENTOVAZIO, "");
            }

            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());
                }

                equipamento                      = new Equipamento();
                equipamento.Modelo               = modelo;
                equipamento.Serie                = serie;
                equipamento.Disponivel           = disponivel;
                equipamento.CategoriaEquipamento = categoria_.First();

                context.Equipamentos.Add(equipamento);
                context.SaveChanges();
            }

            return(equipamento.Id);
        }
Example #2
0
        public static void Atualizar(int id, string nome, string detalhes, DateTime?vencimento, TIPORECURSO tipo)
        {
            if (nome == null || nome.Length == 0)
            {
                throw new EntidadesException(EntityExcCode.NOMERECURSOVAZIO, "");
            }

            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var recurso_ = from Recurso r in context.Recursos
                               where r.Id == id
                               select r;

                if (recurso_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.RECURSOINEXISTENTE, id.ToString());
                }

                Recurso recurso = recurso_.First();
                recurso.Nome       = nome;
                recurso.Detalhes   = detalhes;
                recurso.Vencimento = vencimento;
                recurso.Tipo       = tipo;

                context.SaveChanges();
            }
        }
Example #3
0
        /// <summary>
        /// Remove o recurso do local específico.
        /// </summary>
        /// <param name="idRecurso"></param>
        /// <param name="idLocal"></param>
        public static void RemoverPorLocal(int idRecurso, int idLocal)
        {
            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var recurso_ = from Recurso r in context.Recursos
                               where r.Id == idRecurso
                               select r;

                if (recurso_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.RECURSOINEXISTENTE, idRecurso.ToString());
                }

                var local_ = from Local l in context.Locais
                             where l.Id == idLocal
                             select l;

                if (local_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.LOCALINEXISTENTE, idLocal.ToString());
                }

                var recursolocal_ = from RecursoLocal rl in context.RecursosLocais
                                    where rl.Recurso.Id == idLocal && rl.Local.Id == idLocal
                                    select rl;

                if (recursolocal_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.RECURSOLOCALINEXISTENTE, "");
                }

                context.RecursosLocais.Remove(recursolocal_.First());
                context.SaveChanges();
            }
        }
Example #4
0
        public static void AtualizarSenha(int idUsuario, string oldPassword, string newPassword)
        {
            if (newPassword.Length < TAMANHOSENHA)
            {
                throw new EntidadesException(EntityExcCode.SENHACURTA, "tamanho mínimo é " + TAMANHOSENHA);
            }


            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                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());
                }

                if (Util.GerarHashMd5(oldPassword) != Util.GerarHashMd5(usuario_.First().Senha))
                {
                    throw new EntidadesException(EntityExcCode.SENHANAOCONFERE, "");
                }

                usuario_.First().Senha = Util.GerarHashMd5(newPassword);
                context.SaveChanges();
            }
        }
Example #5
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();
            }
        }
Example #6
0
        public static void CadastrarPorLocal(int idRecurso, int idLocal, int qtde)
        {
            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var recurso_ = from Recurso r in context.Recursos
                               where r.Id == idRecurso
                               select r;

                if (recurso_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.RECURSOINEXISTENTE, idRecurso.ToString());
                }

                var local_ = from Local l in context.Locais
                             where l.Id == idLocal
                             select l;

                if (local_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.LOCALINEXISTENTE, idLocal.ToString());
                }

                RecursoLocal rl = new RecursoLocal();
                rl.Recurso = recurso_.First();
                rl.Local   = local_.First();
                rl.Qtde    = qtde;
                context.RecursosLocais.Add(rl);
                context.SaveChanges();
            }
        }
Example #7
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);
        }
Example #8
0
        public static void Atualizar(int id, string nome, bool reservavel, bool disponivel, TIPOLOCAL tipo, string comentarioReserva)
        {
            if (nome == null || nome.Length == 0)
            {
                throw new EntidadesException(EntityExcCode.NOMELOCALVAZIO, "");
            }

            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var local_ = from Local l in context.Locais
                             where l.Id == id
                             select l;

                if (local_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.LOCALINEXISTENTE, id.ToString());
                }

                Local local = local_.First();
                local.Nome              = nome;
                local.Reservavel        = reservavel;
                local.Disponivel        = disponivel;
                local.Tipo              = tipo;
                local.ComentarioReserva = comentarioReserva;

                context.SaveChanges();
            }
        }
Example #9
0
        public static void Remover(int id)
        {
            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var recurso_ = from Recurso r in context.Recursos.Include("Locais.RecursoLocal")
                               where r.Id == id
                               select r;

                if (recurso_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.RECURSOINEXISTENTE, id.ToString());
                }

                if (recurso_.First().Locais.Count > 0)
                {
                    string info = "";
                    foreach (var r in recurso_.First().Locais)
                    {
                        info += String.Format("[{0}] ", r.Local.Nome);
                    }
                    throw new EntidadesException(EntityExcCode.RECURSOPOSSUILOCAIS, info);
                }


                context.Recursos.Remove(recurso_.First());
                context.SaveChanges();
            }
        }
Example #10
0
        public static void Remover(int id)
        {
            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var local_ = from Local l in context.Locais.Include("Reservas")
                             where l.Id == id
                             select l;

                if (local_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.LOCALINEXISTENTE, id.ToString());
                }

                if (local_.First().Reservas.Count > 0)
                {
                    string info = "";
                    foreach (var r in local_.First().Reservas)
                    {
                        info += String.Format("[{0} {1} {2}] ", r.Data.ToShortDateString(),
                                              r.Turno, r.Horario);
                    }
                    throw new EntidadesException(EntityExcCode.LOCALPOSSUIRESERVAS, info);
                }


                context.Locais.Remove(local_.First());
                context.SaveChanges();
            }
        }
Example #11
0
        public static void RemoverRestricao(int idLocal, int idCategoria)
        {
            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                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());
                }

                Local local = local_.First();

                var categoria_ = from CategoriaEquipamento c in context.Categorias
                                 where c.Id == idCategoria
                                 select c;

                if (categoria_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.CATEGORIAINEXISTENTE, idCategoria.ToString());
                }

                if (!local.RestricoesCategoriaEquipamento.Contains(categoria_.First()))
                {
                    throw new EntidadesException(EntityExcCode.RESTRICAOINEXISTENTE, categoria_.First().Nome + " em " + local.Nome);
                }

                local.RestricoesCategoriaEquipamento.Remove(categoria_.First());
                context.SaveChanges();
            }
        }
Example #12
0
        public static void Remover(int idUsuario)
        {
            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var usuario_ = from Usuario u in context.Usuarios.Include("Reservas").Include("ReservasBolsista").Include("Chamados")
                               where u.Id == idUsuario
                               select u;

                if (usuario_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.IDUSUARIONAOCADASTRADO, idUsuario.ToString());
                }

                if (usuario_.First().ReservasBolsista.Count() > 0)
                {
                    throw new EntidadesException(EntityExcCode.USUARIOPOSSUIRESERVASBOLSISTA, usuario_.First().ReservasBolsista.Count().ToString());
                }

                //Consulta reservas futuras
                List <Reserva> reservas = usuario_.First().Reservas.Where(r => r.Data > DateTime.Now.AddDays(-1)).ToList();
                if (reservas.Count() > 0)
                {
                    throw new EntidadesException(EntityExcCode.USUARIOPOSSUIRESERVAS, reservas.Count().ToString());
                }

                //Remove as reservas antigas
                context.Reservas.RemoveRange(usuario_.First().Reservas);
                context.Usuarios.Remove(usuario_.First());
                context.SaveChanges();
            }
        }
Example #13
0
        public static void Remover(int idCategoria)
        {
            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var categoria_ = from CategoriaEquipamento ce in context.Categorias.Include("Reservas").Include("Equipamentos")
                                 where ce.Id == idCategoria
                                 select ce;

                if (categoria_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.CATEGORIAINEXISTENTE, idCategoria.ToString());
                }

                if (categoria_.First().Reservas.Count > 0)
                {
                    string info = "";
                    foreach (var r in categoria_.First().Reservas)
                    {
                        info += String.Format("[{0} {1} {2}] ", r.Data.ToShortDateString(),
                                              r.Turno, r.Horario);
                    }
                    throw new EntidadesException(EntityExcCode.CATEGORIAPOSSUIRESERVAS, info);
                }

                int equips = categoria_.First().Equipamentos.Count();
                if (equips > 0)
                {
                    throw new EntidadesException(EntityExcCode.CATEGORIAPOSSUIEQUIPAMENTOS, equips.ToString());
                }

                context.Categorias.Remove(categoria_.First());
                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();
            }
        }
Example #15
0
        public static int Cadastrar(string nome, string email, TIPOUSUARIO tipo)
        {
            Usuario usuario = null;

            if (nome == null || nome.Length == 0)
            {
                throw new EntidadesException(EntityExcCode.NOMEUSUARIOVAZIO, "");
            }

            Regex regexEmail = new Regex(@"^(([^<>()[\]\\.,;:\s@\""]+"
                                         + @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@"
                                         + @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
                                         + @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+"
                                         + @"[a-zA-Z]{2,}))$");

            if (!regexEmail.IsMatch(email))
            {
                throw new EntidadesException(EntityExcCode.EMAILINVALIDO, email);
            }

            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var usuario_ = from Usuario u in context.Usuarios
                               where u.Email == email
                               select u;

                if (usuario_.Count() > 0)
                {
                    throw new EntidadesException(EntityExcCode.EMAILJACADASTRADO, email);
                }
                else
                {
                    usuario       = new Usuario();
                    usuario.Nome  = nome;
                    usuario.Email = email;
                    usuario.Tipo  = tipo;
                    usuario.Senha = Util.GerarHashMd5("123456"); //Senha temparária até envio do e-mail com nova senha

                    context.Usuarios.Add(usuario);
                    context.SaveChanges();
                }
            }

            try
            {
                EnviarNovaSenha(email);
            }
            catch (Exception ex)
            {
                throw new EntidadesException(EntityExcCode.SENHANAOENVIADA, ex.Message);
            }

            return(usuario.Id);
        }
        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();
            }
        }
Example #17
0
        public static void Atualizar(int idUsuario, string nome, string email, TIPOUSUARIO tipo)
        {
            if (nome == null || nome.Length == 0)
            {
                throw new EntidadesException(EntityExcCode.NOMEUSUARIOVAZIO, "");
            }

            Regex regexEmail = new Regex(@"^(([^<>()[\]\\.,;:\s@\""]+"
                                         + @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@"
                                         + @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
                                         + @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+"
                                         + @"[a-zA-Z]{2,}))$");

            if (!regexEmail.IsMatch(email))
            {
                throw new EntidadesException(EntityExcCode.EMAILINVALIDO, email);
            }

            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var usuario1_ = from Usuario u in context.Usuarios
                                where u.Id == idUsuario
                                select u;

                if (usuario1_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.IDUSUARIONAOCADASTRADO, idUsuario.ToString());
                }

                var usuario2_ = from Usuario u in context.Usuarios
                                where u.Email == email
                                select u;

                if (usuario2_.Count() > 0 && !usuario1_.First().Email.Equals(email))
                {
                    throw new EntidadesException(EntityExcCode.EMAILJACADASTRADO, email);
                }

                Usuario usuario = usuario1_.First();
                usuario.Nome  = nome;
                usuario.Email = email;
                usuario.Tipo  = tipo;

                context.SaveChanges();
            }
        }
        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);
        }
Example #20
0
        /// <summary>
        /// Retorna o token da sessão.
        /// </summary>
        /// <param name="email"></param>
        /// <param name="senha"></param>
        /// <returns></returns>
        public static List <string> Autenticar(string email, string senha)
        {
            List <string> retorno = new List <string>();

            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var usuario_ = from Usuario u in context.Usuarios
                               where u.Email == email
                               select u;

                if (usuario_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.EMAILNAOCADASTRADO, email);
                }
                else
                {
                    string senhaBD = usuario_.First().Senha;
                    if (senhaBD.Equals(Util.GerarHashMd5(senha)))
                    {
                        byte[] time  = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
                        byte[] key   = Guid.NewGuid().ToByteArray();
                        string token = Convert.ToBase64String(time.Concat(key).ToArray());

                        usuario_.First().Token = token;
                        context.SaveChanges();

                        retorno.Add(usuario_.First().Id.ToString());
                        retorno.Add(token);
                    }
                    else
                    {
                        throw new EntidadesException(EntityExcCode.AUTENTICACAO, email);
                    }
                }
            }

            return(retorno);
        }
Example #21
0
        public static int Cadastrar(string nome, string detalhes, DateTime?vencimento, TIPORECURSO tipo)
        {
            Recurso recurso = null;

            if (nome == null || nome.Length == 0)
            {
                throw new EntidadesException(EntityExcCode.NOMERECURSOVAZIO, "");
            }

            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                recurso            = new Recurso();
                recurso.Nome       = nome;
                recurso.Detalhes   = detalhes;
                recurso.Vencimento = vencimento;
                recurso.Tipo       = tipo;

                context.Recursos.Add(recurso);
                context.SaveChanges();
            }

            return(recurso.Id);
        }
        public static void Atualizar(int id, string modelo, string serie, bool disponivel, int idCategoria)
        {
            if (modelo == null || modelo.Length == 0)
            {
                throw new EntidadesException(EntityExcCode.MODELOEQUIPAMENTOVAZIO, "");
            }

            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var equipamento_ = from Equipamento e in context.Equipamentos
                                   where e.Id == id
                                   select e;

                if (equipamento_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.EQUIPAMENTOINEXISTENTE, id.ToString());
                }

                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());
                }

                Equipamento equipamento = equipamento_.First();
                equipamento.Modelo               = modelo;
                equipamento.Serie                = serie;
                equipamento.Disponivel           = disponivel;
                equipamento.CategoriaEquipamento = categoria_.First();

                context.SaveChanges();
            }
        }
Example #23
0
        public static int Cadastrar(string nome, bool reservavel, bool disponivel, TIPOLOCAL tipo, string comentarioReserva)
        {
            if (nome == null || nome.Length == 0)
            {
                throw new EntidadesException(EntityExcCode.NOMELOCALVAZIO, "");
            }

            Local local = null;

            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                local                   = new Local();
                local.Nome              = nome;
                local.Reservavel        = reservavel;
                local.Disponivel        = disponivel;
                local.Tipo              = tipo;
                local.ComentarioReserva = comentarioReserva;

                context.Locais.Add(local);
                context.SaveChanges();
            }

            return(local == null ? 0 : local.Id);
        }
Example #24
0
        public static void EnviarNovaSenha(string email)
        {
            string nomeUsuario = "";

            using (Uni7ReservasEntities context = new Uni7ReservasEntities())
            {
                var usuario_ = from Usuario u in context.Usuarios
                               where u.Email == email
                               select u;

                if (usuario_.Count() == 0)
                {
                    throw new EntidadesException(EntityExcCode.EMAILNAOCADASTRADO, email);
                }

                nomeUsuario = usuario_.First().Nome;
            }

            try
            {
                Random        random     = new Random((int)DateTime.Now.Ticks);
                StringBuilder pwdBuilder = new StringBuilder();
                char          ch;
                for (int i = 0; i < TAMANHOSENHA; i++)
                {
                    ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
                    pwdBuilder.Append(ch);
                }
                string senha = pwdBuilder.ToString();

                var    fromAddress  = new MailAddress(Util.EMAIL_CONTATO, "UNI7 Reservas");
                var    toAddress    = new MailAddress(email, "");
                string fromPassword = Util.EMAIL_PWD;
                string subject      = "UNI7 Reservas - Senha de acesso";

                string body = "";
                body += "<p>Prezado(a) " + nomeUsuario + ",</p>";
                body += "<p>Sua nova senha de acesso do UNI7 Reservas é <strong>" + senha + "</strong></p>";
                body += "<p></p>";
                body += "<p></p>";
                body += "<a href='http://www.uni7.edu.br/reservas'><img alt =\"\" hspace=0 src=\"cid:imageId\" align=baseline border=0 width=\"120\"></a>";
                body += "<br/><a href='http://www.uni7.edu.br/reservas'>http://www.uni7.edu.br/reservas</a>";

                var smtp = new SmtpClient
                {
                    Host                  = "smtp.office365.com",
                    Port                  = 587,
                    EnableSsl             = true,
                    DeliveryMethod        = SmtpDeliveryMethod.Network,
                    UseDefaultCredentials = false,
                    Credentials           = new NetworkCredential(fromAddress.Address, fromPassword)
                };

                var message = new MailMessage(fromAddress, toAddress);

                message.Subject = subject;

                AlternateView  htmlView  = AlternateView.CreateAlternateViewFromString(body, null, "text/html");
                LinkedResource imagelink = new LinkedResource(HttpContext.Current.Server.MapPath("~/App_LocalResources/uni7_logo.png"), "image/png");
                imagelink.ContentId        = "imageId";
                imagelink.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
                htmlView.LinkedResources.Add(imagelink);
                message.AlternateViews.Add(htmlView);

                smtp.Send(message);

                using (Uni7ReservasEntities context = new Uni7ReservasEntities())
                {
                    var usuario_ = from Usuario u in context.Usuarios
                                   where u.Email == email
                                   select u;

                    if (usuario_.Count() == 0)
                    {
                        throw new EntidadesException(EntityExcCode.EMAILNAOCADASTRADO, email);
                    }

                    usuario_.First().Senha = Util.GerarHashMd5(senha);
                    context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                throw new EntidadesException(EntityExcCode.SENHANAOENVIADA, ex.Message);
            }
        }
        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();
            }
        }
        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();
                }
            }
        }