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 SetStatus(ContractViewModel contractToUpdate) { if (contractToUpdate != null) { if (contractToUpdate.ContractType == (int)ContractType.Proposal) { Contratos updatedContract = new Contratos(); Contratos contractWithoutChanges = DBContracts.GetByIdAndVersion(contractToUpdate.ContractNo, contractToUpdate.VersionNo); if (contractWithoutChanges != null) { if (contractWithoutChanges.Estado != contractToUpdate.Status) { //handle status change switch (contractToUpdate.Status) { case 1: //Alterar para Aberta /* * Fazer arquivo * Preencher estado com ‘Aberta’ */ contractToUpdate = ArchiveContract(contractToUpdate); break; //case 2: //Alterada para enviada // /* // * Fazer arquivo // * Preencher estado com ‘Enviada’ // * Preencher ‘Data Envio’ com data indicada pelo utilizador.Deve ser criado um mecanismo tipo ‘PopUp’ para indicação dessa data. // */ case 3: //Alterada para Revista /* * Preencher estado com ‘Revista’ * Fazer arquivo * Preencher estado com ‘Aberta’ * Incrementar 1 na versão da Proposta * Limpar Data de Estado * Preencher Data alteração com data do sistema * Alterar versão nas Linhas da Proposta para versão colocada em cabeçalho */ updatedContract = DBContracts.Update(DBContracts.ParseToDB(contractToUpdate)); updatedContract.Estado = 3; updatedContract.DataEstadoProposta = null; contractToUpdate = ArchiveContract(DBContracts.ParseToViewModel(updatedContract, string.Empty, string.Empty)); break; case 4: //Alterada para Perdida /* * A pedido do António José quando se muda o Estado para Perdida * Só se atualiza-se o estado da proposta e não se cria uma nova versão de Histórico * Pedido feito em 21-01-2019 */ contractToUpdate.Status = 4; contractToUpdate.History = true; contractToUpdate.Filed = true; updatedContract = DBContracts.Update(DBContracts.ParseToDB(contractToUpdate)); break; case 5: //Alterar para Cancelada /* * A pedido do António José quando se muda o Estado para Cancelada * Só se atualiza-se o estado da proposta e não se cria uma nova versão de Histórico * Pedido feito em 21-01-2019 */ contractToUpdate.Status = 5; contractToUpdate.History = true; contractToUpdate.Filed = true; updatedContract = DBContracts.Update(DBContracts.ParseToDB(contractToUpdate)); break; case 10: //Alterar para Não Respondida /* * Fazer arquivo * Preencher a razão do Arquivo.Deve ser criado um mecanismo tipo ‘PopUp’ para indicação desta informação. * Preencher estado com ‘Oportunidade Não Respondida’ * Preencher Data Estado com data do sistema * Passar p/ Histórico */ contractToUpdate.DateProposedState = DateTime.Now.ToString(); contractToUpdate = ArchiveContract(contractToUpdate); break; default: updatedContract = DBContracts.Update(DBContracts.ParseToDB(contractToUpdate)); contractToUpdate = DBContracts.ParseToViewModel(updatedContract, string.Empty, string.Empty); break; } } //else //{ // updatedContract = DBContracts.Update(DBContracts.ParseToDB(contractToUpdate)); // contractToUpdate = DBContracts.ParseToViewModel(updatedContract, string.Empty, string.Empty); //} contractToUpdate.eReasonCode = 1; } else { contractToUpdate.eReasonCode = 2; contractToUpdate.eMessage = "Ocorreu um erro ao atualizar o contrato."; } } else { contractToUpdate.eReasonCode = 2; contractToUpdate.eMessage = "O tipo de contrato é inválido."; } } return(contractToUpdate); }
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); }