コード例 #1
0
ファイル: MedicosController.cs プロジェクト: Doctor9/doctor9
        public ActionResult Editar(Medico medico)
        {
            var ctx = new ApplicationDbContext();

            if (ctx.Medicos.FirstOrDefault(m => m.CRM == medico.CRM && m.IdMedico != medico.IdMedico) != null)
            {
                ModelState.AddModelError("CRM", "Já existe um médico cadastrado com este CRM");
            }

            if (!ModelState.IsValid)
            {
                return View(medico);
            }

            var medicoExistente = ctx.Medicos.Find(medico.IdMedico);

            medicoExistente.CRM = medico.CRM;
            medicoExistente.Nome = medico.Nome;
            medicoExistente.idEspecialidade = medico.idEspecialidade;
            medicoExistente.DataNascimento = medico.DataNascimento;
            medicoExistente.SexoMasculino = medico.SexoMasculino;
            medicoExistente.Telefone = medico.Telefone;
            medicoExistente.Email = medico.Email;
            medicoExistente.Observacoes = medico.Observacoes;

            ctx.SaveChanges();

            return RedirectToAction("Index", new { msg = "Médico alterado com sucesso" });
        }
コード例 #2
0
ファイル: AccountController.cs プロジェクト: Doctor9/doctor9
        public ActionResult Login(FormCollection f, string returnUrl)
        {
            var ctx = new ApplicationDbContext();
            var aaa = Request.Form["login"];
            var bbb = Request.Form["senha"];
            var saudacao = "";

            var usu = (from u in ctx.Usuarios
                       where u.Login == aaa && u.Senha == bbb
                       select u).FirstOrDefault();

            if (usu != null)
            {
                if (usu.Apelido == null)
                {
                    saudacao = usu.Nome;
                }
                else {
                    saudacao = usu.Apelido;
                }
                FormsAuthentication.SetAuthCookie(saudacao, false);
                return RedirectToAction("Index", "");
            }
            else
            {
                ModelState.AddModelError("Senha", "Usuário ou senha inválido");
                return View();
            }
        }
コード例 #3
0
        public ActionResult Consultas()
        {
            var ctx = new ApplicationDbContext();
            var claims = HttpContext.User.Identity as ClaimsIdentity;
            var idMedico = int.Parse(claims.Claims.First(c => c.Type == "IdMedico").Value);

            var q = from c in ctx.Consultas
                    where c.idMedico == idMedico
                    select c;

            var agenda = q.ToList().Select(c =>
            {
                var dataConsulta = DateTime.Parse(c.dataConsulta + " " + c.horarioConsulta, new CultureInfo("pt-BR"));
                var paciente = ctx.Usuarios.First(u => u.IdPaciente == c.idPaciente);

                return new
                {
                    id = c.IdConsulta,
                    title = paciente.Nome,
                    start = dataConsulta.ToString("yyyy-MM-dd HH:mm:ss"),
                    end = dataConsulta.AddMinutes(30).ToString("yyyy-MM-dd HH:mm:ss"),
                    color = "LimeGreen",
                    allDay = false,
                    marcacao = c.dataAgendamento,
                    observacoes = c.observacoes
                };
            });

            return Json(agenda, JsonRequestBehavior.AllowGet);
        }
コード例 #4
0
ファイル: MedicosController.cs プロジェクト: Doctor9/doctor9
        public ActionResult DesativarPost(int id)
        {
            var ctx = new ApplicationDbContext();
            var medico = ctx.Medicos.Find(id);

            var consultas = from c in ctx.Consultas
                            where c.idMedico == id
                            select c;

            var proximas = consultas.ToList().Where(c =>
            {
                var dataConsulta = DateTime.Parse(c.dataConsulta + " " + c.horarioConsulta, new CultureInfo("pt-BR"));
                return DateTime.Now < dataConsulta;
            });

            if (proximas.Count() > 0)
            {
                ModelState.AddModelError("", "Não é possível desativar este médico pois ele possui consultas futuras.");
            }

            if (!ModelState.IsValid)
            {
                return View(medico);
            }

            medico.Ativo = false;
            ctx.SaveChanges();

            return RedirectToAction("Index", new { msg = "Médico desativado com sucesso" });
        }
コード例 #5
0
        public ActionResult AgendamentoConsulta(FormCollection f, string returnUrl)
        {
            var dataAgendamento = Request.Form["diaAgenda"];
            var horaAgendamento = Request.Form["hrAgenda"];
            var descEspecialidade = Request.Form["idEspecAgenda"];
            var descMedico = Request.Form["idMedicAgenda"];
            var CRM = string.Concat(descMedico.TakeWhile((c) => c != '-'));
            var usuario = (int)Session["UsuarioLogado"];

            var ctx = new ApplicationDbContext();
            var idEspec = (from u in ctx.Especialidades
                       where u.NomeEspecialidade == descEspecialidade
                       select u.IdEspecialidade).FirstOrDefault();

            var idMedic = (from u in ctx.Medicos
                       where u.CRM.ToString() == CRM
                           select u.IdMedico).FirstOrDefault();

            if (dataAgendamento != null)
            {
                var ctx2 = new ApplicationDbContext();
                var cons = new Consulta()
                {
                    idPaciente = usuario,
                    idEspecialidade = idEspec,
                    idMedico = idMedic,
                    dataAgendamento = DateTime.Now.ToString("dd/MM/yyyy"),
                    dataConsulta = dataAgendamento,
                    horarioConsulta = horaAgendamento,
                    observacoes = Request.Form["observacoes"]
                };

                var validConsulta = (from u in ctx.Consultas
                               where u.dataConsulta == dataAgendamento
                               && u.horarioConsulta == horaAgendamento
                               && u.idPaciente == usuario
                                     select u.IdConsulta).Count();
                if (validConsulta > 0)
                {
                    //fazer tela de erro
                    return RedirectToAction("", "Agendamento");

                }
                else
                {
                    ctx2.Consultas.Add(cons);
                    ctx2.SaveChanges();
                }

                return RedirectToAction("", "Agendamento");
            }
            else
            {
                ModelState.AddModelError("Senha", "Usuário ou senha inválido");
                return View();
            }
        }
コード例 #6
0
ファイル: MedicosController.cs プロジェクト: Doctor9/doctor9
        public ActionResult Editar(int id)
        {
            var ctx = new ApplicationDbContext();
            var medico = ctx.Medicos.FirstOrDefault(m => m.IdMedico == id);

            if (medico == null || medico.Ativo == false)
            {
                return RedirectToAction("Index");
            }

            return View(medico);
        }
コード例 #7
0
ファイル: AccountController.cs プロジェクト: Doctor9/doctor9
        public ActionResult Login(FormCollection f, string returnUrl)
        {
            var ctx = new ApplicationDbContext();
            var login = Request.Form["login"];
            var senha = Request.Form["senha"];

            var usu = (from u in ctx.Usuarios
                       where u.Login == login && u.Senha == senha
                       select u).FirstOrDefault();

            if (usu != null)
            {
                Session["UsuarioLogado"] = usu.IdPaciente;
                FormsAuthentication.SetAuthCookie(login, false);
                return RedirectToAction("Index", "");
            }
            else
            {
                ModelState.AddModelError("Senha", "Usuário ou senha inválido");
                return View();
            }
        }
コード例 #8
0
ファイル: Global.asax.cs プロジェクト: Doctor9/doctor9
        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
            var authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];

            if (authCookie != null)
            {
                var ctx = new ApplicationDbContext();
                var ticket = FormsAuthentication.Decrypt(authCookie.Value);
                var formsIdentity = new FormsIdentity(ticket);
                var claimsIdentity = new ClaimsIdentity(formsIdentity);
                var usuario = ctx.Usuarios.First(u => u.Login == ticket.Name);

                if (usuario.Apelido != null)
                {
                    claimsIdentity.AddClaim(new Claim("saudacao", usuario.Apelido));
                }
                else
                {
                    claimsIdentity.AddClaim(new Claim("saudacao", usuario.Nome));
                }

                switch (usuario.Tipo)
                {
                    case Usuario.TipoUsuario.Paciente:
                        claimsIdentity.AddClaim(new Claim(ClaimTypes.Role, "Paciente"));
                        break;
                    case Usuario.TipoUsuario.Medico:
                        claimsIdentity.AddClaim(new Claim(ClaimTypes.Role, "Medico"));
                        claimsIdentity.AddClaim(new Claim("IdMedico", usuario.IdMedico.ToString()));
                        break;
                    case Usuario.TipoUsuario.Secretaria:
                        claimsIdentity.AddClaim(new Claim(ClaimTypes.Role, "Secretaria"));
                        break;
                }

                HttpContext.Current.User = new ClaimsPrincipal(claimsIdentity);
            }
        }
コード例 #9
0
        public ActionResult RemoveConsulta(int Id)
        {
            using (var context = new ApplicationDbContext())
            {
                var cons = context.Consultas.FirstOrDefault(u => u.IdConsulta == Id);
                context.Consultas.Remove(cons);
                    context.SaveChanges();

                return RedirectToAction("", "Agendamento");
            }
        }
コード例 #10
0
        public Models.Agendamento.ConsultaItem[] MinhasConsultas(int usuario)
        {
            ApplicationDbContext db = new ApplicationDbContext();

            var mcons = (from con in db.Consultas.Where(con => con.idPaciente == usuario)
                         from med in db.Medicos.Where(med => med.IdMedico == con.idMedico)
                             //where DateTime.Parse(con.dataConsulta) >= DateTime.Parse(DateTime.Now.ToString("dd/MM/yyyy"))

                         select new Models.Agendamento.ConsultaItem()
                         {
                             dataConsulta = con.dataConsulta,
                             horarioConsulta = con.horarioConsulta,
                             nome = med.Nome,
                             observacoes = con.observacoes,
                             idConsulta = con.IdConsulta
                         }).Distinct().OrderBy(con => con.dataConsulta)
                         .ToArray();
            return mcons;
        }
コード例 #11
0
        /*Carregamento*/
        public ActionResult Listar(int medico)
        {
            var ctx = new ApplicationDbContext();
            var usuario = (int)Session["UsuarioLogado"];

            var q = from c in ctx.Consultas
                    where c.idMedico == medico
                    select c;

            var agenda = q.ToList().Select(c =>
            {
                var dataConsulta = DateTime.Parse(c.dataConsulta + " " + c.horarioConsulta, new CultureInfo("pt-BR"));

                if (c.idPaciente == usuario)
                {
                    return new
                    {
                        id = c.IdConsulta,
                        title = "Consulta",
                        start = dataConsulta.ToString("yyyy-MM-dd HH:mm:ss"),
                        end = dataConsulta.AddMinutes(30).ToString("yyyy-MM-dd HH:mm:ss"),
                        color = "LimeGreen",
                        allDay = false
                    };
                }
                else
                {
                    return new
                    {
                        id = c.IdConsulta,
                        title = "Consulta",
                        start = dataConsulta.ToString("yyyy-MM-dd HH:mm:ss"),
                        end = dataConsulta.AddMinutes(30).ToString("yyyy-MM-dd HH:mm:ss"),
                        color = "DimGray",
                        allDay = false
                    };

                }
            }
                );

            return Json(agenda, JsonRequestBehavior.AllowGet);
        }
コード例 #12
0
        //Salvar Alteração de Observações
        public void ListaObservacoes(List<Models.Agendamento.Observacoes> lista)
        {
            ApplicationDbContext db = new ApplicationDbContext();

            foreach (var observacoes in lista)
            {
                var user = db.Consultas.Single(u => u.IdConsulta == observacoes.Id);
                user.observacoes = observacoes.Obs;
                db.SaveChanges();
            }
        }
コード例 #13
0
        public JsonResult ListaMedico(int Id, string DataDisp)
        {
            if (DataDisp == "")
            {
                var state = from s in db.Medicos
                            where s.idEspecialidade == Id && s.Ativo == true
                            select s;
                return Json(new SelectList(state.ToArray(), "idMedico", "ConcatenarCRM"), JsonRequestBehavior.AllowGet);
            }
            else
            {
                using (var context = new ApplicationDbContext())
                {
                    var state = context.Medicos.SqlQuery("select distinct aa.idmedico,aa.nome,aa.idEspecialidade,aa.CRM from ( select m.*,xx.agenda,yy.consulta from medico m inner join agenda a on a.idmedico = m.IdMedico inner join consulta c on c.idMedico = m.IdMedico left join (select idmedico,count(*) as agenda from agenda where dataconsulta = '" + DataDisp + "' group by idMedico ) xx on xx.idMedico = m.IdMedico left join (select idmedico,count(*) as consulta from Consulta where dataconsulta = '" + DataDisp + "' group by idMedico) yy on yy.idMedico = m.IdMedico where c.dataconsulta = '" + DataDisp + "' and a.horarioConsulta = c.horarioConsulta ) aa where aa.consulta < aa.agenda and aa.idEspecialidade = " + Id);
                    return Json(new SelectList(state.ToArray(), "idMedico", "ConcatenarCRM"), JsonRequestBehavior.AllowGet);
                }

            }
        }
コード例 #14
0
ファイル: MedicosController.cs プロジェクト: Doctor9/doctor9
        public ActionResult Index(string msg)
        {
            var ctx = new ApplicationDbContext();
            var lista = ctx.Medicos
                .Include("Especialidade")
                .OrderBy(m => m.Nome);

            ViewBag.Msg = msg;

            return View(lista);
        }
コード例 #15
0
ファイル: MedicosController.cs プロジェクト: Doctor9/doctor9
        public ActionResult Incluir(Medico medico)
        {
            var ctx = new ApplicationDbContext();

            if (ctx.Medicos.FirstOrDefault(m => m.CRM == medico.CRM) != null)
            {
                ModelState.AddModelError("CRM", "Já existe um médico cadastrado com este CRM");
            }

            if (medico.Disponibilidade.HasValue && medico.Disponibilidade.Value < DateTime.Now.Date)
            {
                ModelState.AddModelError("Disponibilidade", "Disponibilidade deve ser superior a data atual");
            }

            if (!ModelState.IsValid)
            {
                return View();
            }

            if (medico.Disponibilidade.HasValue)
            {
                medico.Ativo = false;
            }
            else
            {
                medico.Ativo = true;
            }

            ctx.Medicos.Add(medico);
            ctx.SaveChanges();

            return RedirectToAction("Index", new { msg = "Médico cadastrado com sucesso" });
        }