public ActionResult Manter(int? id)
        {
            Teacher model;

            if (id.HasValue)
            {
                model = _servicoTeacher.GetById(id.Value);
            }
            else
            {
                model = new Teacher {Person = new Person()};
            }

            var disciplinas = model.Courses;

            TempData[DISCIPLINA] = disciplinas.ToList();
            keepTempData();

            CarregarDropDowns(model);

            return View(Constants.MANTER, model);
        }
 public static Func<Teacher, bool> TeacherFilterCondition(Teacher teacher)
 {
     return a =>
         string.IsNullOrEmpty(teacher.Person.Name) ||
         a.Person.Name.ToLower().Contains(teacher.Person.Name.ToLower());
 }
        /// <summary>
        ///     Método Responsavel por Popular as DropDownList com os valores cadastrados na base de dados
        /// </summary>
        /// <param name="model">Teacher Atual</param>
        private void CarregarDropDowns(Teacher model)
        {
            ViewBag.EstadoCivil = BuildListItemfromEnum<MaritalStatusEnum>(model.Person.MaritalState.ToString());
            ViewBag.Sexo = BuildListItemfromEnum<SexEnum>(model.Person.Sex.ToString());
            ViewBag.Escolaridades = BuildListItemfromEnum<EducationEnum>(model.Education.ToString());

            var disciplinas = _servicoCourse.GetAll();
            ViewBag.Disciplinas = BuildListSelectListItemWith(disciplinas, "Description", "Id");

            if (model.Id > 0)
            {
                var cidades =
                    _servicoCity.SelectWithFilter(a => a.State.Code.Equals(model.Person.Address.State)).ToList();
                ViewBag.Cidades = BuildListSelectListItemWith(cidades, "Name", "Id",
                    model.Person.Address.CityId.ToString());

                var estados = _servicoState.GetAll().ToList();
                ViewBag.Estados = BuildListSelectListItemWith(estados, "Name", "Code", model.Person.Address.State);
            }
            else
            {
                ViewBag.Cidades = BuildListSelectListItemWith(new List<City>(), "Description", "Id");
                ViewBag.Estados = BuildListSelectListItemWith(_servicoState.GetAll(), "Name", "Code");
            }
        }
        public JsonResult Salvar(Teacher teacher)
        {
            var retorno = 1;

            var login = GetFormatedUserLoginAndPassword(teacher.Person);
            var mensagem = teacher.Id == 0
                ? Messages.SUCCESSFULLY_INSERTED_RECORD + login
                : Messages.SUCCESSFULLY_UPDATED_RECORD + login;

            try
            {
                var disciplinas = TempData[DISCIPLINA] as List<Courses>;
                foreach (var item in disciplinas)
                {
                    teacher.Courses.Add(_servicoCourse.GetById(item.Id));
                }

                var usuario = _servicoUser.SelectWithFilter(a => a.Person.Id == teacher.Person.Id).FirstOrDefault() ??
                              new User {Person = new Person()};
                BuildLoggedUser(teacher.Person, usuario, (int) AccessProfileEnum.Docente);

                _servicoPerson.ValidadePerson(teacher.Person);

                if (_servicoTeacher.IsRequiredFieldsFilled(teacher))
                {
                    _servicoTeacher.SaveAndReturn(teacher);
                    usuario.Person = _servicoPerson.GetById(teacher.Person.Id);
                    _servicoUser.SaveAndReturn(usuario);
                }
            }
            catch (Exception ex)
            {
                mensagem = GetErrorMessageFromExceptionType(ex);
            }

            return Json(new {retorno, msg = mensagem, docenteID = teacher.Id});
        }
        public JsonResult ListarPaginado(string Nome)
        {
            var paginaAtual = Convert.ToInt32(Request.Params[Constants.START_PAGE]);

            var docente = new Teacher {Person = new Person {Name = Nome}};

            var docentes = _servicoTeacher.SelectWithPagination(docente, paginaAtual);

            var totalRegistros = _servicoTeacher.Total(docente);

            docentes.ForEach(a => a.Courses = null);

            return BuildJsonObject(docentes, totalRegistros);
        }