public ActionResult Edicao(string id) { Guid Guid = Guid.Parse(id); EdicaoContratoViewModel obj = null; Contrato oContrato = ContratoBusiness.Consulta.FirstOrDefault(p => string.IsNullOrEmpty(p.UsuarioExclusao) && p.UniqueKey.Equals(Guid)); if (oContrato != null) { ViewBag.Departamentos = DepartamentoBusiness.Consulta.Where(p => string.IsNullOrEmpty(p.UsuarioExclusao)).ToList(); ViewBag.Fornecedores = EmpresaBusiness.Consulta.Where(p => string.IsNullOrEmpty(p.UsuarioExclusao)).ToList().OrderBy(a => a.NomeFantasia); obj = new EdicaoContratoViewModel() { ID = oContrato.ID.ToString(), Numero = oContrato.Numero, Descricao = oContrato.Descricao, DataInicio = oContrato.DataInicio, DataFim = oContrato.DataFim }; REL_ContratoFornecedor rel1 = REL_ContratoFornecedorBusiness.Consulta.FirstOrDefault(a => string.IsNullOrEmpty(a.UsuarioExclusao) && a.UKContrato.Equals(oContrato.UniqueKey) && a.TipoContratoFornecedor == GISModel.Enums.ETipoContratoFornecedor.Contratada); obj.UKFornecedor = rel1.UKFornecedor.ToString(); List <REL_DepartamentoContrato> relsDep = REL_DepartamentoContratoBusiness.Consulta.Where(a => string.IsNullOrEmpty(a.UsuarioExclusao) && a.UKContrato.Equals(oContrato.UniqueKey)).ToList(); if (relsDep?.Count > 0) { obj.Departamento = new List <string>(); foreach (REL_DepartamentoContrato item in relsDep) { obj.Departamento.Add(item.UKDepartamento.ToString()); } } List <REL_ContratoFornecedor> relsSub = REL_ContratoFornecedorBusiness.Consulta.Where(a => string.IsNullOrEmpty(a.UsuarioExclusao) && a.UKContrato.Equals(oContrato.UniqueKey) && a.TipoContratoFornecedor == GISModel.Enums.ETipoContratoFornecedor.SubContratada).ToList(); if (relsSub?.Count > 0) { obj.SubContratadas = new List <string>(); foreach (REL_ContratoFornecedor item in relsSub) { obj.SubContratadas.Add(item.UKFornecedor.ToString()); } } return(View(obj)); } return(View()); }
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() })); } }