public CondominoEditViewModel Run(Repository value)
        {
            CondominoEditViewModel r      = (CondominoEditViewModel)value;
            CondominoEditViewModel result = new CondominoEditViewModel()
            {
                mensagem = new Validate()
                {
                    Code = 0, Message = "Registro processado com sucesso"
                }
            };

            try
            {
                int _empresaId = sessaoCorrente.empresaId;

                if (r.CondominoViewModel is CondominoPFViewModel)
                {
                    #region CondominoPF
                    CondominoPFModel condominoPFModel = new CondominoPFModel(this.db, this.seguranca_db);
                    result.CondominoViewModel = condominoPFModel.getObject((CondominoPFViewModel)r.CondominoViewModel);
                    if (result.CondominoViewModel == null)
                    {
                        result.CondominoViewModel = new CondominoPFViewModel()
                        {
                            mensagem = new Validate()
                        };

                        throw new App_DominioException("Acesso não permitido", "Error");
                    }
                    #endregion
                }
                else
                {
                    #region CondominoPJ
                    CondominoPJModel condominoPJModel = new CondominoPJModel(this.db, this.seguranca_db);
                    result.CondominoViewModel = condominoPJModel.getObject((CondominoPJViewModel)r.CondominoViewModel);
                    if (result.CondominoViewModel == null)
                    {
                        result.CondominoViewModel = new CondominoPJViewModel()
                        {
                            mensagem = new Validate()
                        };

                        throw new App_DominioException("Acesso não permitido", "Error");
                    }
                    #endregion
                }


                CredenciadoModel               CredenciadoModel;
                ListViewCredenciados           ListCredenciados;
                VeiculoModel                   VeiculoModel;
                ListViewVeiculos               ListVeiculos;
                FuncionarioModel               FuncionarioModel;
                ListViewFuncionarios           ListFuncionarios;
                ListViewGrupoCondominoUsuarios ListGrupoCondominoUsuarios;

                if (String.IsNullOrEmpty(value.sessionId))
                {
                    CredenciadoModel           = new CredenciadoModel(this.db, this.seguranca_db);
                    ListCredenciados           = new ListViewCredenciados(this.db, this.seguranca_db);
                    VeiculoModel               = new VeiculoModel(this.db, this.seguranca_db);
                    ListVeiculos               = new ListViewVeiculos(this.db, this.seguranca_db);
                    FuncionarioModel           = new FuncionarioModel(this.db, this.seguranca_db);
                    ListFuncionarios           = new ListViewFuncionarios(this.db, this.seguranca_db);
                    ListGrupoCondominoUsuarios = new ListViewGrupoCondominoUsuarios(this.db, this.seguranca_db);
                }
                else
                {
                    CredenciadoModel           = new CredenciadoModel(this.db, this.seguranca_db, value.sessionId);
                    ListCredenciados           = new ListViewCredenciados(this.db, this.seguranca_db, value.sessionId);
                    VeiculoModel               = new VeiculoModel(this.db, this.seguranca_db, value.sessionId);
                    ListVeiculos               = new ListViewVeiculos(this.db, this.seguranca_db, value.sessionId);
                    FuncionarioModel           = new FuncionarioModel(this.db, this.seguranca_db, value.sessionId);
                    ListFuncionarios           = new ListViewFuncionarios(this.db, this.seguranca_db, value.sessionId);
                    ListGrupoCondominoUsuarios = new ListViewGrupoCondominoUsuarios(this.db, this.seguranca_db, value.sessionId);
                }

                result.CredenciadoViewModel             = CredenciadoModel.CreateRepository();
                result.CredenciadoViewModel.CondominoID = result.CondominoViewModel.CondominoID;
                result.Credenciados = ListCredenciados.Bind(0, 50, result.CondominoViewModel.CondominoID);


                #region Veículos

                result.VeiculoViewModel = VeiculoModel.CreateRepository();
                result.VeiculoViewModel.CondominioID = sessaoCorrente.empresaId;
                result.VeiculoViewModel.EdificacaoID = r.UnidadeViewModel.EdificacaoID;
                result.VeiculoViewModel.UnidadeID    = r.UnidadeViewModel.UnidadeID;
                result.VeiculoViewModel.CondominoID  = result.CondominoViewModel.CondominoID;

                result.Veiculos = ListVeiculos.Bind(0, 50, result.VeiculoViewModel.CondominioID, result.VeiculoViewModel.EdificacaoID, result.VeiculoViewModel.UnidadeID, result.VeiculoViewModel.CondominoID);
                #endregion

                #region Funcionários
                result.FuncionarioViewModel = FuncionarioModel.CreateRepository();
                result.FuncionarioViewModel.CondominioID = sessaoCorrente.empresaId;
                result.FuncionarioViewModel.EdificacaoID = r.UnidadeViewModel.EdificacaoID;
                result.FuncionarioViewModel.UnidadeID    = r.UnidadeViewModel.UnidadeID;
                result.FuncionarioViewModel.CondominoID  = result.CondominoViewModel.CondominoID;

                result.Funcionarios = ListFuncionarios.Bind(0, 50, result.FuncionarioViewModel.CondominioID, result.FuncionarioViewModel.EdificacaoID, result.FuncionarioViewModel.UnidadeID, result.FuncionarioViewModel.CondominoID);
                #endregion

                #region Grupo de Condôminos

                result.GrupoCondominoUsuarios = ListGrupoCondominoUsuarios.Bind(0, 50, result.CondominoViewModel.CondominoID);
                #endregion

                #region Unidade
                result.UnidadeViewModel = new UnidadeViewModel()
                {
                    CondominioID        = _empresaId,
                    EdificacaoID        = r.UnidadeViewModel.EdificacaoID,
                    EdificacaoDescricao = r.UnidadeViewModel.EdificacaoID > 0 ? db.Edificacaos.Find(r.UnidadeViewModel.EdificacaoID).Descricao : "",
                    UnidadeID           = r.UnidadeViewModel.UnidadeID,
                    Codigo = db.Unidades.Find(_empresaId, r.UnidadeViewModel.EdificacaoID, r.UnidadeViewModel.UnidadeID).Codigo,
                };
                #endregion

                if (SessaoLocal.CondominoID > 0)
                {
                    #region Valida permissão do usuário para editar o condômino
                    if (r.CondominoViewModel.CondominoID != SessaoLocal.CondominoID)
                    {
                        throw new App_DominioException("Acesso não permitido", "Error");
                    }
                    bool flag = false;
                    foreach (Unidade unidade in SessaoLocal.Unidades)
                    {
                        if (r.UnidadeViewModel.UnidadeID == unidade.UnidadeID && r.UnidadeViewModel.EdificacaoID == unidade.EdificacaoID)
                        {
                            flag = true;
                        }
                    }
                    if (!flag)
                    {
                        throw new App_DominioException("Acesso não permitido", "Error");
                    }
                    #endregion
                }
            }
            catch (ArgumentException ex)
            {
                result.CondominoViewModel.mensagem = new Validate()
                {
                    Code = 999, Message = MensagemPadrao.Message(999).ToString(), MessageBase = ex.Message
                };
            }
            catch (App_DominioException ex)
            {
                result.CondominoViewModel.mensagem.Code = 999;

                if (ex.InnerException != null)
                {
                    result.CondominoViewModel.mensagem.MessageBase = new App_DominioException(ex.InnerException.Message ?? ex.Message, GetType().FullName).Message;
                }
                else
                {
                    result.CondominoViewModel.mensagem.MessageBase = new App_DominioException(ex.Message, GetType().FullName).Message;
                }
            }
            catch (DbUpdateException ex)
            {
                result.CondominoViewModel.mensagem.MessageBase = ex.InnerException.InnerException.Message ?? ex.Message;
                if (result.CondominoViewModel.mensagem.MessageBase.ToUpper().Contains("REFERENCE"))
                {
                    if (result.CondominoViewModel.mensagem.MessageBase.ToUpper().Contains("DELETE"))
                    {
                        result.CondominoViewModel.mensagem.Code        = 16;
                        result.CondominoViewModel.mensagem.Message     = MensagemPadrao.Message(16).ToString();
                        result.CondominoViewModel.mensagem.MessageType = MsgType.ERROR;
                    }
                    else
                    {
                        result.CondominoViewModel.mensagem.Code        = 28;
                        result.CondominoViewModel.mensagem.Message     = MensagemPadrao.Message(28).ToString();
                        result.CondominoViewModel.mensagem.MessageType = MsgType.ERROR;
                    }
                }
                else if (result.CondominoViewModel.mensagem.MessageBase.ToUpper().Contains("PRIMARY"))
                {
                    result.CondominoViewModel.mensagem.Code        = 37;
                    result.CondominoViewModel.mensagem.Message     = MensagemPadrao.Message(37).ToString();
                    result.CondominoViewModel.mensagem.MessageType = MsgType.WARNING;
                }
                else if (result.CondominoViewModel.mensagem.MessageBase.ToUpper().Contains("UNIQUE KEY"))
                {
                    result.CondominoViewModel.mensagem.Code        = 54;
                    result.CondominoViewModel.mensagem.Message     = MensagemPadrao.Message(54).ToString();
                    result.CondominoViewModel.mensagem.MessageType = MsgType.WARNING;
                }
                else
                {
                    result.CondominoViewModel.mensagem.Code        = 44;
                    result.CondominoViewModel.mensagem.Message     = MensagemPadrao.Message(44).ToString();
                    result.CondominoViewModel.mensagem.MessageType = MsgType.ERROR;
                }
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
            {
                result.CondominoViewModel.mensagem = new Validate()
                {
                    Code = 42, Message = MensagemPadrao.Message(42).ToString(), MessageBase = ex.EntityValidationErrors.Select(m => m.ValidationErrors.First().ErrorMessage).First()
                };
            }
            catch (Exception ex)
            {
                result.CondominoViewModel.mensagem.Code        = 17;
                result.CondominoViewModel.mensagem.Message     = MensagemPadrao.Message(17).ToString();
                result.CondominoViewModel.mensagem.MessageBase = new App_DominioException(ex.InnerException.InnerException.Message ?? ex.Message, GetType().FullName).Message;
                result.CondominoViewModel.mensagem.MessageType = MsgType.ERROR;
            }
            return(result);
        }
Esempio n. 2
0
        public ActionResult EditFuncionario(FuncionarioViewModel FuncionarioViewModel, string OperacaoFunc)
        {
            if (ModelState.IsValid)
            {
                if (ViewBag.ValidateRequest)
                {
                    CondominoEditViewModel result = null;
                    try
                    {
                        #region Incluir/Editar Funcionário
                        result = new CondominoEditViewModel()
                        {
                            UnidadeViewModel     = new UnidadeViewModel(),
                            CondominoViewModel   = new CondominoPFViewModel(),
                            CredenciadoViewModel = new CredenciadoViewModel(),
                            VeiculoViewModel     = new VeiculoViewModel(),
                            FuncionarioViewModel = new FuncionarioViewModel()
                            {
                                FuncionarioID = FuncionarioViewModel.FuncionarioID,
                                CondominioID  = FuncionarioViewModel.CondominioID,
                                EdificacaoID  = FuncionarioViewModel.EdificacaoID,
                                UnidadeID     = FuncionarioViewModel.UnidadeID,
                                CondominoID   = FuncionarioViewModel.CondominoID,
                                Nome          = FuncionarioViewModel.Nome,
                                Funcao        = FuncionarioViewModel.Funcao,
                                Sexo          = FuncionarioViewModel.Sexo,
                                Dia           = FuncionarioViewModel.Dia,
                                HoraInicial   = FuncionarioViewModel.HoraInicial,
                                HoraFinal     = FuncionarioViewModel.HoraFinal,
                                RG            = FuncionarioViewModel.RG
                            },
                            mensagem = new App_Dominio.Contratos.Validate()
                            {
                                Code = 0
                            }
                        };

                        result.FuncionarioViewModel.uri = this.ControllerContext.Controller.GetType().Name.Replace("Controller", "") + "/" + this.ControllerContext.RouteData.Values["action"].ToString();
                        FactoryLocalhost <FuncionarioViewModel, ApplicationContext> factory = new FactoryLocalhost <FuncionarioViewModel, ApplicationContext>();
                        result.Funcionarios = factory.Execute(new EditarFuncionarioBI(OperacaoFunc), result.FuncionarioViewModel, FuncionarioViewModel.CondominioID, FuncionarioViewModel.EdificacaoID, FuncionarioViewModel.UnidadeID, FuncionarioViewModel.CondominoID, OperacaoFunc);
                        if (factory.Mensagem.Code > 0)
                        {
                            throw new App_DominioException(factory.Mensagem);
                        }
                        FuncionarioModel FuncionarioModel = new FuncionarioModel();
                        result.FuncionarioViewModel = FuncionarioModel.CreateRepository(Request);
                        result.FuncionarioViewModel.FuncionarioID = FuncionarioViewModel.FuncionarioID;
                        result.FuncionarioViewModel.CondominioID  = FuncionarioViewModel.CondominioID;
                        result.FuncionarioViewModel.EdificacaoID  = FuncionarioViewModel.EdificacaoID;
                        result.FuncionarioViewModel.UnidadeID     = FuncionarioViewModel.UnidadeID;
                        result.FuncionarioViewModel.CondominoID   = FuncionarioViewModel.CondominoID;
                        #endregion

                        Success("Registro processado com sucesso");
                    }
                    catch (App_DominioException ex)
                    {
                        ModelState.AddModelError("", ex.Result.MessageBase); // mensagem amigável ao usuário
                        Error(ex.Result.Message);                            // Mensagem em inglês com a descrição detalhada do erro e fica no topo da tela
                    }
                    catch (Exception ex)
                    {
                        App_DominioException.saveError(ex, GetType().FullName);
                        ModelState.AddModelError("", MensagemPadrao.Message(17).ToString()); // mensagem amigável ao usuário
                        Error(ex.Message);                                                   // Mensagem em inglês com a descrição detalhada do erro e fica no topo da tela
                    }

                    return(View("_Funcionarios", result));
                }
                else
                {
                    return(View());
                }
            }
            else
            {
                CondominoEditViewModel result = new CondominoEditViewModel()
                {
                    UnidadeViewModel = new UnidadeViewModel()
                    {
                        EdificacaoID = FuncionarioViewModel.EdificacaoID,
                        UnidadeID    = FuncionarioViewModel.UnidadeID,
                        CondominioID = FuncionarioViewModel.CondominioID
                    },
                    CondominoViewModel = new CondominoPFViewModel()
                    {
                        CondominoID = FuncionarioViewModel.CondominoID
                    },
                    VeiculoViewModel     = new VeiculoViewModel(),
                    FuncionarioViewModel = FuncionarioViewModel
                };

                Factory <CondominoEditViewModel, ApplicationContext> factory = new Factory <CondominoEditViewModel, ApplicationContext>();
                CondominoEditViewModel obj = factory.Execute(new EditarCondominoBI(), result);
                result.Funcionarios = obj.Funcionarios;

                Error("Erro de preenhcimento em campos");

                return(View("_Funcionarios", result));
            }
        }