public ActionResult Cadastrar(Contrato oContrato) { if (ModelState.IsValid) { try { ContratoBusiness.Inserir(oContrato); TempData["MensagemSucesso"] = "O Contrato '" + oContrato.DescricaoContrato + "' foi cadastrado com sucesso!"; return(Json(new { resultado = new RetornoJSON() { URL = Url.Action("Index", "Contrato") } })); } catch (Exception ex) { if (ex.GetBaseException() == null) { return(Json(new { resultado = new RetornoJSON() { Erro = ex.Message } })); } else { return(Json(new { resultado = new RetornoJSON() { Erro = ex.GetBaseException().Message } })); } } } else { return(Json(new { resultado = TratarRetornoValidacaoToJSON() })); } }
public ActionResult Cadastrar(NovoContratoViewModel entidade) { if (ModelState.IsValid) { try { if (entidade?.Departamento?.Count > 0) { if (entidade?.SubContratadas?.Count > 0 && !string.IsNullOrEmpty(entidade.UKFornecedor)) { if (entidade.SubContratadas.Where(a => a.Equals(entidade.UKFornecedor)).Count() > 0) { throw new Exception("Não é possível selecionar o mesmo fornecedor no campo sub-contratada"); } } Contrato obj = new Contrato() { UniqueKey = Guid.NewGuid(), Numero = entidade.Numero, Descricao = entidade.Descricao, DataInicio = entidade.DataInicio, DataFim = entidade.DataFim, UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login }; ContratoBusiness.Inserir(obj); if (!string.IsNullOrEmpty(entidade.UKFornecedor)) { REL_ContratoFornecedor rel = new REL_ContratoFornecedor() { UKContrato = obj.UniqueKey, UKFornecedor = Guid.Parse(entidade.UKFornecedor), UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login, TipoContratoFornecedor = GISModel.Enums.ETipoContratoFornecedor.Contratada }; REL_ContratoFornecedorBusiness.Inserir(rel); } if (entidade?.SubContratadas?.Count > 0) { foreach (string sub in entidade.SubContratadas) { REL_ContratoFornecedor rel = new REL_ContratoFornecedor() { UKContrato = obj.UniqueKey, UKFornecedor = Guid.Parse(sub), UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login, TipoContratoFornecedor = GISModel.Enums.ETipoContratoFornecedor.SubContratada }; REL_ContratoFornecedorBusiness.Inserir(rel); } } foreach (string Dep in entidade.Departamento) { REL_DepartamentoContrato objDepContrato = new REL_DepartamentoContrato() { UKContrato = obj.UniqueKey, UKDepartamento = Guid.Parse(Dep), UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login }; REL_DepartamentoContratoBusiness.Inserir(objDepContrato); } } else { throw new Exception("É necessário informar pelo menos um departamento para prosseguir com o cadastro do contrato."); } Extensions.GravaCookie("MensagemSucesso", "O Contrato '" + entidade.Numero + "' foi cadastrado com sucesso!", 10); return(Json(new { resultado = new RetornoJSON() { URL = Url.Action("Index", "Contrato") } })); } catch (Exception ex) { if (ex.GetBaseException() == null) { return(Json(new { resultado = new RetornoJSON() { Erro = ex.Message } })); } else { return(Json(new { resultado = new RetornoJSON() { Erro = ex.GetBaseException().Message } })); } } } else { return(Json(new { resultado = TratarRetornoValidacaoToJSON() })); } }
public ActionResult Atualizar(EdicaoContratoViewModel entidade) { if (ModelState.IsValid) { try { Contrato objBanco = ContratoBusiness.Consulta.FirstOrDefault(a => string.IsNullOrEmpty(a.UsuarioExclusao) && a.UniqueKey.ToString().Equals(entidade.ID)); if (objBanco == null) { throw new Exception("Não foi possível localizar o contrato na base de dados."); } else { if (!entidade.Numero.Equals(objBanco.Numero) || !entidade.Descricao.Equals(objBanco.Descricao) || !entidade.DataInicio.Equals(objBanco.DataInicio) || !entidade.DataFim.Equals(objBanco.DataFim)) { objBanco.UsuarioExclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login; ContratoBusiness.Terminar(objBanco); Contrato newContrato = new Contrato() { UniqueKey = objBanco.UniqueKey, UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login, Numero = entidade.Numero, Descricao = entidade.Descricao, DataInicio = entidade.DataInicio, DataFim = entidade.DataFim }; ContratoBusiness.Inserir(newContrato); } REL_ContratoFornecedor rel1 = REL_ContratoFornecedorBusiness.Consulta.FirstOrDefault(a => string.IsNullOrEmpty(a.UsuarioExclusao) && a.UKContrato.Equals(objBanco.UniqueKey) && a.TipoContratoFornecedor == GISModel.Enums.ETipoContratoFornecedor.Contratada); if (!entidade.UKFornecedor.Equals(rel1.UKFornecedor.ToString())) { rel1.UsuarioExclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login; REL_ContratoFornecedorBusiness.Terminar(rel1); REL_ContratoFornecedor newRel1 = new REL_ContratoFornecedor() { UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login, UKContrato = objBanco.UniqueKey, UKFornecedor = Guid.Parse(entidade.UKFornecedor), TipoContratoFornecedor = GISModel.Enums.ETipoContratoFornecedor.Contratada }; REL_ContratoFornecedorBusiness.Inserir(newRel1); } List <REL_DepartamentoContrato> relsDep = REL_DepartamentoContratoBusiness.Consulta.Where(a => string.IsNullOrEmpty(a.UsuarioExclusao) && a.UKContrato.Equals(objBanco.UniqueKey)).ToList(); Extensions.GravaCookie("MensagemSucesso", "O Contrato '" + entidade.Numero + "' foi atualizado com sucesso.", 10); //Primeira verificação, o que veio da web e não está no banco if (entidade?.Departamento?.Count > 0) { foreach (string dep in entidade.Departamento) { if (relsDep.Where(a => a.UKDepartamento.ToString().Equals(dep)).Count() == 0) { //Dep não está nos departamentos do banco de dados, logo, inserir REL_DepartamentoContratoBusiness.Inserir(new REL_DepartamentoContrato() { UKContrato = objBanco.UniqueKey, UKDepartamento = Guid.Parse(dep), UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login }); } } } //Segunda verificação, o que veio do banco que não está na web if (relsDep?.Count > 0) { foreach (REL_DepartamentoContrato item in relsDep) { if (entidade.Departamento.Where(a => a.Equals(item.UKDepartamento.ToString())).Count() == 0) { //rel do banco não está entre os valores vindos da web, logo, terminar item.UsuarioExclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login; REL_DepartamentoContratoBusiness.Terminar(item); } } } List <REL_ContratoFornecedor> relsSub = REL_ContratoFornecedorBusiness.Consulta.Where(a => string.IsNullOrEmpty(a.UsuarioExclusao) && a.UKContrato.Equals(objBanco.UniqueKey) && a.TipoContratoFornecedor == GISModel.Enums.ETipoContratoFornecedor.SubContratada).ToList(); //Primeira verificação, o que veio da web e não está no banco if (entidade?.SubContratadas?.Count > 0) { foreach (string sub in entidade.SubContratadas) { if (relsSub.Where(a => a.UKFornecedor.ToString().Equals(sub)).Count() == 0) { //Sub não está nas subcontratadas do banco de dados, logo, inserir REL_ContratoFornecedorBusiness.Inserir(new REL_ContratoFornecedor() { UKContrato = objBanco.UniqueKey, UKFornecedor = Guid.Parse(sub), TipoContratoFornecedor = GISModel.Enums.ETipoContratoFornecedor.SubContratada, UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login }); } } } if (relsSub?.Count > 0) { foreach (REL_ContratoFornecedor item in relsSub) { if (entidade.SubContratadas.Where(a => a.Equals(item.UKFornecedor.ToString())).Count() == 0) { //rel do banco não está entre os valores vindos da web, logo, terminar item.UsuarioExclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login; REL_ContratoFornecedorBusiness.Terminar(item); } } } } Extensions.GravaCookie("MensagemSucesso", "O Contrato '" + entidade.Numero + "' foi atualizado com sucesso.", 10); return(Json(new { resultado = new RetornoJSON() { URL = Url.Action("Index", "Contrato") } })); } catch (Exception ex) { if (ex.GetBaseException() == null) { return(Json(new { resultado = new RetornoJSON() { Erro = ex.Message } })); } else { return(Json(new { resultado = new RetornoJSON() { Erro = ex.GetBaseException().Message } })); } } } else { return(Json(new { resultado = TratarRetornoValidacaoToJSON() })); } }