コード例 #1
0
        public ActionResult Edit(InstituicaoViewModelEdit i)
        {
            try
            {
                i.Cidades = _db.Cidades.ToList();


                if (ModelState.IsValid)
                {
                    var UserID        = User.Identity.GetUserId();
                    var InstituicaoID = Convert.ToInt16(_db.Instituicoes.Where(w => w.UserID == UserID).Select(se => se.InstituicaoID).FirstOrDefault());
                    i.Cidade = _db.Cidades.FirstOrDefault(c => c.CidadeID == i.Cidade.CidadeID);

                    var inst = _db.Instituicoes.Find(InstituicaoID);

                    inst.Morada          = i.Morada;
                    inst.Nome            = i.Nome;
                    inst.Telefone        = i.Telefone;
                    inst.Cidade          = i.Cidade;
                    inst.CodPostal       = i.CodPostal;
                    inst.TipoInstituicao = i.TipoInstituicao;

                    _db.SaveChanges();

                    var lstServ = _db.InstituicoesServicos.Where(w => w.InstituicoesID == InstituicaoID);
                    _db.InstituicoesServicos.RemoveRange(lstServ);

                    foreach (var it in i.Servicos)
                    {
                        if (it.IsSelected)
                        {
                            var instSer = new InstituicaoServico();
                            instSer.InstituicoesID = InstituicaoID;
                            instSer.ServicosID     = it.ServicosID;
                            _db.InstituicoesServicos.Add(instSer);
                        }
                    }

                    var lstTE = _db.InstituicaoTipoEnsino.Where(w => w.InstituicoesID == InstituicaoID);
                    _db.InstituicaoTipoEnsino.RemoveRange(lstTE);

                    foreach (var it in i.TiposEnsino)
                    {
                        if (it.IsSelected)
                        {
                            var instTEnsi = new InstituicaoTipoEnsino();
                            instTEnsi.InstituicoesID = InstituicaoID;
                            instTEnsi.TipoEnsinoID   = it.TipoEnsinoID;
                            instTEnsi.Valor          = it.Valor;
                            _db.InstituicaoTipoEnsino.Add(instTEnsi);
                        }
                    }
                    _db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                return(View());
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
            {
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        ModelState.AddModelError("", "\n" + string.Format("{0}:{1}",
                                                                          validationErrors.Entry.Entity.ToString(),
                                                                          validationError.ErrorMessage));
                    }
                }
                return(View(i));
            }
            catch (Exception e)
            {
                return(View(i));
            }
        }
コード例 #2
0
        public async System.Threading.Tasks.Task <ActionResult> Registo(InstituicaoViewModelAdd inst)
        {
            try
            {
                ViewBag.CidadeID = new SelectList(_db.Cidades, "CidadeID", "CidadeNome");

                if (_UserDb.Users.Any(y => y.Email == inst.Email))
                {
                    ModelState.AddModelError("Email", "Conta já existente!");
                }
                if (inst.Cidade.CidadeID.ToString() == "")
                {
                    ModelState.AddModelError("Cidade", "Selecione uma Cidade Valida!");
                }
                if (inst.TipoInstituicao == 0)
                {
                    ModelState.AddModelError("TipoInstituicao", "Selecione uma Instituição!");
                }
                int count = 0;
                foreach (var it in inst.TiposEnsino)
                {
                    if (it.IsSelected)
                    {
                        count++;
                    }
                }
                if (count == 0)
                {
                    ModelState.AddModelError("TiposEnsino", "Selecione Pelo menos 1 Serviço de ensino!");
                }

                if (ModelState.IsValid)
                {
                    var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(_UserDb));
                    var user        = new ApplicationUser {
                        UserName = inst.Email, Email = inst.Email
                    };
                    var result = await UserManager.CreateAsync(user, inst.Password);

                    if (result.Succeeded)
                    {
                        if (!roleManager.RoleExists(RolesConst.Instituicao))
                        {
                            var role = new IdentityRole();
                            role.Name = RolesConst.Instituicao;
                            roleManager.Create(role);
                        }

                        result = UserManager.AddToRole(user.Id, RolesConst.Instituicao);

                        if (result.Succeeded)
                        {
                            try
                            {
                                Instituicao i = new Instituicao();

                                i.UserID          = user.Id;
                                i.Cidade          = _db.Cidades.FirstOrDefault(c => c.CidadeID == inst.Cidade.CidadeID);
                                i.Morada          = inst.Morada;
                                i.Nome            = inst.Nome;
                                i.CodPostal       = inst.CodPostal;
                                i.Telefone        = inst.Telefone;
                                i.TipoInstituicao = inst.TipoInstituicao;

                                _db.Instituicoes.Add(i);
                                _db.SaveChanges();


                                foreach (var it in inst.Servicos)
                                {
                                    if (it.IsSelected)
                                    {
                                        var instSer = new InstituicaoServico();
                                        instSer.InstituicoesID = i.InstituicaoID;
                                        instSer.ServicosID     = it.ServicosID;
                                        _db.InstituicoesServicos.Add(instSer);
                                    }
                                }

                                foreach (var it in inst.TiposEnsino)
                                {
                                    if (it.IsSelected)
                                    {
                                        var instTEnsi = new InstituicaoTipoEnsino();
                                        instTEnsi.InstituicoesID = i.InstituicaoID;
                                        instTEnsi.TipoEnsinoID   = it.TipoEnsinoID;
                                        instTEnsi.Valor          = it.Valor;
                                        _db.InstituicaoTipoEnsino.Add(instTEnsi);
                                    }
                                }

                                _db.SaveChanges();
                                await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                                return(RedirectToAction("Index"));
                            }
                            catch (Exception e)
                            {
                                //RollBack
                                UserManager.RemoveFromRole(user.Id, RolesConst.Instituicao);
                                result = UserManager.Delete(user);
                                return(View(inst));
                            }
                        }
                        else
                        {
                            UserManager.Delete(user); //RollBack Role
                        }
                    }
                    AddErrors(result);
                }


                // TODO: Add insert logic here

                return(View(inst));
            }
            catch (Exception e)
            {
                return(View(inst));
            }
        }