/// <summary> /// /// </summary> /// <param name="transactionType">CONVENTION or AVENANT</param> /// <returns></returns> public static List<string> GetDocumentTypes(SignatureTransactionType transactionType) { var listDocumentTypes = new List<string>(); if (transactionType == SignatureTransactionType.CONVENTION) { var conventDocumentTypes = new List<string>() { ElectronicSafeDocumentBL.DocumentType.CPART.ToString(), ElectronicSafeDocumentBL.DocumentType.CINT.ToString(), ElectronicSafeDocumentBL.DocumentType.CCOURT.ToString(), ElectronicSafeDocumentBL.DocumentType.CCOMP.ToString(), //ElectronicSafeDocumentBL.DocumentType.CMD.ToString(), }; listDocumentTypes = conventDocumentTypes; } else if (transactionType == SignatureTransactionType.AVENANT) { var avenantDocumentTypes = new List<string>() { ElectronicSafeDocumentBL.DocumentType.APART.ToString(), ElectronicSafeDocumentBL.DocumentType.AINT.ToString(), ElectronicSafeDocumentBL.DocumentType.ACOURT.ToString(), ElectronicSafeDocumentBL.DocumentType.AVENANT.ToString(), }; listDocumentTypes = avenantDocumentTypes; } return listDocumentTypes; }
public static SignatureTransaction CreateTransaction(Guid idUserCreated, Guid idFirmInstitutionCGP, SignatureTransactionType transactionType) { using (UpsilabEntities context = new UpsilabEntities()) { context.Connection.Open(); using (var dbContextTransaction = context.Connection.BeginTransaction()) { try { //1- Create transaction --------------------------------------------------------- var transaction = new SignatureTransaction { idFirmInstitution = idFirmInstitutionCGP, idSignatureTransaction = GuidHelper.GenerateGuid(), idUserCreated = idUserCreated, SignatureTransactionType = transactionType.ToString(), DateCreated = DateTime.Now, Status = DocumentBL.Status.InProgress.ToString(), DocumentsInitialized = false, }; context.SignatureTransaction.AddObject(transaction); context.SaveChanges(); //2- Signature Transaction Status ----------------------------------------------- var status = DocumentStatusBL.GetByCode(DocumentBL.Status.InProgress.ToString()); SignatureTransactionStatutBL.Add(transaction.idSignatureTransaction, status.idDocumentStatus, context); //Update status in FirmInstitutionCalculatedData var calculatedData = FirmInstitutionBL.GetCalculatedData(idFirmInstitutionCGP); if (calculatedData == null) { calculatedData = new FirmInstitutionCalculatedData() { idFirmInstitution = idFirmInstitutionCGP }; } if (transactionType == SignatureTransactionType.CONVENTION) { calculatedData.ConventionLatestStatus = DocumentBL.Status.InProgress.ToString(); } else if (transactionType == SignatureTransactionType.AVENANT) { calculatedData.AvenantLatestStatus = DocumentBL.Status.InProgress.ToString(); } FirmInstitutionBL.SaveCalculatedData(calculatedData, context); //3- Add the 4 documents automatically : CPART, CINT, CCOURT, CMD --------------- if (transactionType == SignatureTransactionType.CONVENTION) { var listDocumentTypes = GetDocumentTypes(SignatureTransactionType.CONVENTION); if (listDocumentTypes != null) DocumentBL.AddDocuments(transaction.idSignatureTransaction, listDocumentTypes, context); } //4- Create signatory ------------------------------------------------------------ //CGP var firmAdviser = FirmInstitutionAdviserBL.GetDefaultSignatory(idFirmInstitutionCGP); if (firmAdviser != null) { SignatoryBL.CreateSignatory(transaction.idSignatureTransaction, firmAdviser.User.idUser, SignatoryBL.Roles.CGP.ToString(), context); } //SDG SignatoryBL.CreateSignatory(transaction.idSignatureTransaction, idUserCreated, SignatoryBL.Roles.SDG.ToString(), context); //5- Commit transaction ---------------------------------------------------------- dbContextTransaction.Commit(); //6- Reload transaction ---------------------------------------------------------- transaction = DocumentSignatureTransactionBL.GetTransactionByCGP(idFirmInstitutionCGP, transactionType.ToString()); return transaction; } catch (Exception e) { dbContextTransaction.Rollback(); Log.Log.AppendException(e); throw new Exception("SavingError"); } } } }