public ContractViewModel ArchiveContract(ContractViewModel data) { if (data != null) { if (data.ContractType == (int)ContractType.Proposal) { Contratos contract = DBContracts.GetByIdAndVersion(data.ContractNo, data.VersionNo); if (contract != null) { try { //Create new contract and update old contract.UtilizadorModificação = changedByUserName; contract.Arquivado = true; DBContracts.Update(contract); contract = DBContracts.ParseToDB(data); contract.NºVersão = contract.NºVersão + 1; contract.UtilizadorCriação = changedByUserName; contract.UtilizadorModificação = ""; if (contract.TipoContrato == 1) { contract.NºProposta = ""; } contract.DataHoraModificação = null; List <int> finishingStates = new List <int>() { 4, 5, 10 }; if (contract.Estado.HasValue) { if (finishingStates.Contains(contract.Estado.Value)) { contract.Arquivado = true; } else { contract.Arquivado = false; } } else { contract.Arquivado = false; } //if (data.ActionCode.HasValue && data.ActionCode.Value == 2) //{ // contract.Estado = 1; // contract.DataHoraModificação = DateTime.Now; // contract.UtilizadorModificação = changedByUserName; //} DBContracts.Create(contract); //Duplicate Contract Lines List <LinhasContratos> contractLines = DBContractLines.GetAllByActiveContract(data.ContractNo, data.VersionNo); contractLines.ForEach(x => { x.NºLinha = 0; x.NºVersão = contract.NºVersão; DBContractLines.Create(x); }); //data.VersionNo = contract.NºVersão; data = DBContracts.ParseToViewModel(contract, string.Empty, string.Empty); data.eReasonCode = 1; data.eMessage = "Arquivado com sucesso."; } catch (Exception) { data.eReasonCode = 2; data.eMessage = "Ocorreu um erro ao arquivar."; } } } else { data.eReasonCode = 2; data.eMessage = "O tipo de contrato é inválido."; } } else { data.eReasonCode = 2; data.eMessage = "Ocorreu um erro ao arquivar."; } return(data); }
public ContractViewModel ArchiveContract(ContractViewModel contractToArchive) { if (contractToArchive != null) { Contratos cContract = DBContracts.GetByIdAndVersion(contractToArchive.ContractNo, contractToArchive.VersionNo); var lastVersionContract = DBContracts.GetByIdLastVersion(contractToArchive.ContractNo); int lastVersionNumber = 0; if (lastVersionContract != null) { lastVersionNumber = lastVersionContract.NºVersão + 1; } else { lastVersionNumber = contractToArchive.VersionNo + 1; } if (cContract != null) { try { //Create new contract and update old cContract.Notas = cContract.Notas; cContract.RazãoArquivo = contractToArchive.ArchiveReason; cContract.UtilizadorModificação = changedByUserName; cContract.Arquivado = true; DBContracts.Update(cContract); //NR20181116 - Só faz se não for Oportunidade if (cContract.TipoContrato == (int)ContractType.Oportunity) { contractToArchive.eReasonCode = 1; contractToArchive.eMessage = "Arquivado com sucesso."; return(contractToArchive); } cContract.NºVersão = lastVersionNumber;// cContract.NºVersão + 1; cContract.UtilizadorCriação = changedByUserName; cContract.UtilizadorModificação = ""; if (cContract.TipoContrato == (int)ContractType.Oportunity) { cContract.NºProposta = ""; } else if (cContract.TipoContrato == (int)ContractType.Proposal) { cContract.NºContrato = ""; } cContract.DataHoraModificação = null; cContract.Arquivado = false; if (contractToArchive.ActionCode.HasValue && contractToArchive.ActionCode.Value == 2) { cContract.Estado = 1; cContract.DataHoraModificação = DateTime.Now; cContract.UtilizadorModificação = changedByUserName; } DBContracts.Create(cContract); //Duplicate Contract Lines List <LinhasContratos> ContractLines = DBContractLines.GetAllByActiveContract(contractToArchive.ContractNo, contractToArchive.VersionNo); ContractLines.ForEach(x => { x.NºVersão = lastVersionNumber;// cContract.NºVersão; DBContractLines.Create(x); }); contractToArchive.VersionNo = lastVersionNumber;// cContract.NºVersão; contractToArchive.eReasonCode = 1; contractToArchive.eMessage = "Arquivado com sucesso."; return(contractToArchive); } catch (Exception) { contractToArchive.eReasonCode = 2; contractToArchive.eMessage = "Ocorreu um erro ao arquivar."; } } } else { contractToArchive.eReasonCode = 2; contractToArchive.eMessage = "Ocorreu um erro ao arquivar."; } return(contractToArchive); }