// Start is called before the first frame update void Start() { interaction = FindObjectOfType <InteractionUni>(); terminalCamera.enabled = false; weapon = FindObjectOfType <ChangeWeapon>(); flashLight = FindObjectOfType <FlashLight>(); move = FindObjectOfType <PlayerMove>(); mDoc = FindObjectOfType <MissionDocument>(); eq = FindObjectOfType <EquipmentSystem>(); TextAsset asset = (TextAsset)Resources.Load(@"TerminalSCP\SCPTerminal"); terminalXML = new XmlDocument(); terminalXML.LoadXml(asset.text); textLogo.text = terminalXML.GetElementsByTagName("title")[0].InnerText; settings = FindObjectOfType <Settings_options>(); source = GetComponent <AudioSource>(); LoadText("back", 0); }
/// <summary> /// Create a CRTO and update customerProspect idCRTO (from an existing LM/RM) /// </summary> /// <param name="missionDocument">LM ou RM having attached CRTO</param> /// <returns>Created CRTO</returns> public static ConvRTO CreateCRTOFromMissionDocument(MissionDocument missionDocument) { try { using (var context = new UpsilabEntities()) { if (missionDocument != null && missionDocument.AttachConventionRTO.HasValue && missionDocument.AttachConventionRTO.Value) { //Création d'un enregistrement dans la table ConventionRTO ConvRTO convention = new ConvRTO() { idConventionRTO = Guid.NewGuid(), IdCustomerProspect = missionDocument.idCustomerProspect, idDictao = missionDocument.idDictao, idDTPUserAccess = missionDocument.idDTPUserAccess, idSignatoryUser = missionDocument.idSignatoryUser, SignedByAdviser = missionDocument.SignedByAdviser, SignedByCustomer = missionDocument.SignedByCustomer, Status = missionDocument.Status, Archived = missionDocument.Archived, DateAdviserSignature = missionDocument.DateAdviserSignature, DateCreated = missionDocument.DateCreated, DateSignatureCustomer = missionDocument.DateCustomerSignature, DatesSendMailToCustomer = missionDocument.DatesSendMailToCustomer, DateUpdated = missionDocument.DateUpdated, }; Upsilab.Business.ConventionRTO.ConventionRTOBL.Create(convention); return convention; } } } catch (Exception ex) { Log.Log.AppendException(ex); } return null; }
public static string GetSignedMissionDocument(MissionDocument missionDoc, ElectronicSafeDocumentBL.DocumentType ESDocumentType, bool isUrl) { string file = string.Empty; string filename = string.Empty; Data.Model.CustomerProspect customer = missionDoc.CustomerProspect; string docType = (missionDoc.IsLetter) ? ElectronicSafeDocumentBL.DocumentType.LM.ToString() : ElectronicSafeDocumentBL.DocumentType.RM.ToString(); DTPClient.DocumentTypes dtpDocType = DTPClient.DocumentTypes.CONTRACT; //For LM and RM doc switch (ESDocumentType) { case ElectronicSafeDocumentBL.DocumentType.BS: docType = ElectronicSafeDocumentBL.DocumentType.BS.ToString(); dtpDocType = DTPClient.DocumentTypes.APPENDIX1; break; case ElectronicSafeDocumentBL.DocumentType.FIL: docType = ElectronicSafeDocumentBL.DocumentType.FIL.ToString(); dtpDocType = DTPClient.DocumentTypes.APPENDIX2; break; case ElectronicSafeDocumentBL.DocumentType.CRTO: docType = docType + "_" + ElectronicSafeDocumentBL.DocumentType.CRTO; dtpDocType = DTPClient.DocumentTypes.APPENDIX3; break; } string userPath = ElectronicSafeDocumentBL.BuildClientDocumentPath(docType, customer, true); string destFullPath = System.IO.Path.Combine(ConfigurationManager.SignedDocumentRootPath, userPath, filename); filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, missionDoc.idMissionDocument, false); filename = string.Format("SIGNED_{0}", filename); //Download signed doc from dictao server if (!System.IO.File.Exists(System.IO.Path.Combine(destFullPath, filename))) { GetSignedDocumentFromDictao(missionDoc.idDictao, destFullPath, filename, dtpDocType); } if (isUrl) { file = System.IO.Path.Combine(ConfigurationManager.SignedDocumentRootPath, userPath, filename); //file = Url.Content(string.Format("~/uploads/{0}/{1}", userPath, filename).Replace("\\", "/")); } else { file = System.IO.Path.Combine(destFullPath, filename); } return file; }
public ActionResult SignerDocumentMissionParConseiller(string id) { string error = string.Empty; string urlIHM_Dictao = string.Empty; MissionDocument missionDoc = new MissionDocument(); List<DocumentToSign> documentsToSign = new List<DocumentToSign>(); try { // Id mission doc = id in parameter missionDoc = MissionDocumentBL.GetMissionDocumentById(new Guid(id)); if (missionDoc == null) { error = _languageData.GetContent("selectionner_un_doc_a_signer"); } else { documentsToSign = this.GetDocumentsToSign(missionDoc); //TODO generate pdf ? //Signature if (documentsToSign.Count == 0) { error = _languageData.GetContent("aucun_doc_a_signer_veuillez"); } if (string.IsNullOrEmpty(error)) { // Sign the document mission Upsilab.Data.Model.User userAdviser = (missionDoc.User != null) ? missionDoc.User : Upsilab.Business.Utility.SessionManager.GetUserSession(); urlIHM_Dictao = SignatureDocumentBL.SignMissionDocumentByAdviser(missionDoc.idMissionDocument, documentsToSign, userAdviser); } } } catch (Exception ex) { Upsilab.Business.Log.Log.AppendException(ex); error = ex.Message; } if (!string.IsNullOrEmpty(error)) { string missionDocLabel = (missionDoc.IsLetter) ? _languageData.GetContent("lettre_de_mission") : _languageData.GetContent("rapport_de_mission"); SignatureModel signatureModel = new SignatureModel() { H1Title = (missionDoc.IsLetter) ? _languageData.GetContent("lettre_de_mission") : _languageData.GetContent("rapport_de_mission"), HeadTitle = string.Format("Signature {0}", missionDocLabel), ErrorMessage = error }; return View("AllerSignature", signatureModel); } else { return Redirect(urlIHM_Dictao); } }
public ActionResult SignerDocumentMissionParClient(string id) { string error = string.Empty; string urlIHM_Dictao = string.Empty; int pageCount = 0; MissionDocument missionDoc = new MissionDocument(); try { // Id latest mission document = id in parameter if (string.IsNullOrEmpty(id)) { error = _languageData.GetContent("selectionner_un_doc_a_signer"); } else { missionDoc = MissionDocumentBL.GetMissionDocumentById(new Guid(id)); if (missionDoc == null) { error = _languageData.GetContent("selectionner_un_doc_a_signer"); } else { List<DocumentToSign> documentsToSign = this.GetDocumentsToSign(missionDoc); //TODO generate pdf ? // Sign the mission document (Customer signs secondly) urlIHM_Dictao = SignatureDocumentBL.SignMissionDocumentByCustomer(missionDoc.idMissionDocument, documentsToSign, pageCount); } } } catch (Exception ex) { Upsilab.Business.Log.Log.AppendException(ex); error = ex.Message; } if (!string.IsNullOrEmpty(error)) { string missionDocLabel = (missionDoc.IsLetter) ? _languageData.GetContent("lettre_de_mission") : _languageData.GetContent("rapport_de_mission"); SignatureModel signatureModel = new SignatureModel() { H1Title = (missionDoc.IsLetter) ? _languageData.GetContent("lettre_de_mission") : _languageData.GetContent("rapport_de_mission"), HeadTitle = string.Format(_languageData.GetContent("signature_"), missionDocLabel), ErrorMessage = error }; return View("AllerSignature", signatureModel); } else { return Redirect(urlIHM_Dictao); } }
private List<DocumentToSign> GetDocumentsToSign(MissionDocument missionDoc) { var currentUser = SessionManager.GetUserSession(); string error = string.Empty; int pageCount = 0; CustomerProspect customer = missionDoc.CustomerProspect; bool isPP = (missionDoc.CustomerProspect.IsCorporation.HasValue) ? ((missionDoc.CustomerProspect.IsCorporation.Value) ? false : true) : false; List<SignatureParameter> signatureParametersMD = new List<SignatureParameter>(); List<DocumentToSign> documentsToSign = new List<DocumentToSign>(); #region 1- Mission document //A- Build pdf mission document to sign string docType = (missionDoc.IsLetter) ? ElectronicSafeDocumentBL.DocumentType.LM.ToString() : ElectronicSafeDocumentBL.DocumentType.RM.ToString(); string destFullPath = ElectronicSafeDocumentBL.BuildClientUploadDocumentPath(docType, customer); string filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, missionDoc.idMissionDocument, false); string destMissionDocFilePath = System.IO.Path.Combine(destFullPath, filename); //If Upsideo model, generate pdf //If Firm model, merge uploaded file with the first and last page if (missionDoc.IsUpsideoModel) { //1 : Génération du PDF if (missionDoc.IsLetter) //Lettre de Mission { if (isPP) { pageCount = MissionDocumentPdfGenerationBL.GeneratePP_EngagementLetter(missionDoc, destMissionDocFilePath, false); } else { pageCount = MissionDocumentPdfGenerationBL.GeneratePM_EngagementLetter(missionDoc, destMissionDocFilePath, false); } } else // Rapport de mission { pageCount = MissionDocumentPdfGenerationBL.Generate_MissionReport(missionDoc, destMissionDocFilePath, false); } } else { //Merge pdf filename = missionDoc.FileName; string uploadedDoc = System.IO.Path.Combine(destFullPath, filename); if (missionDoc.IsLetter) { MissionDocumentPdfGenerationBL.GenerateEngagementLetterByMerge(missionDoc, uploadedDoc, destMissionDocFilePath, false, out pageCount); } else { MissionDocumentPdfGenerationBL.GenerateReportLetterByMerge(missionDoc, uploadedDoc, destMissionDocFilePath, false, out pageCount); } } if (!System.IO.File.Exists(destMissionDocFilePath)) { error = _languageData.GetContent("doc_n_a_pas_ete_genere_correctement"); } else { //B- Prepare object to sign SignatureParameter signatureParameter = new SignatureParameter() { SignatureFieldLabel = DTPClient.USER_ADVISER, SignaturePosition = new SignaturePosition() { Page = (pageCount > 0) ? pageCount : (missionDoc.IsLetter) ? (isPP ? 13 : 12) : 10, //LM : 13pages; RM : 10pages X = 33, Y = 177 } }; signatureParametersMD.Add(signatureParameter); signatureParameter = new SignatureParameter() { SignatureFieldLabel = DTPClient.USER_CUSTOMER, SignaturePosition = new SignaturePosition() { Page = (pageCount > 0) ? pageCount : (missionDoc.IsLetter) ? (isPP ? 13 : 12) : 10, //LM : 13pages; RM : 10pages X = 120, Y = 177 } }; signatureParametersMD.Add(signatureParameter); string typeDocLabel = (missionDoc.IsLetter) ? _languageData.GetContent("lettre_de_mission") : _languageData.GetContent("rapport_de_mission"); DocumentToSign docMD = new DocumentToSign() { Label = typeDocLabel, Description = typeDocLabel, PathFilename = destMissionDocFilePath, Type = DTPClient.DocumentTypes.CONTRACT.ToString(), SignatureParameters = signatureParametersMD }; documentsToSign.Add(docMD); } #endregion #region 2- Convention RTO Document if (missionDoc.AttachConventionRTO.HasValue && missionDoc.AttachConventionRTO.Value) { List<SignatureParameter> signatureParametersRTO = new List<SignatureParameter>(); //A- Generate CRTO pdf pageCount = 0; docType = (missionDoc.IsLetter) ? ElectronicSafeDocumentBL.DocumentType.LM.ToString() : ElectronicSafeDocumentBL.DocumentType.RM.ToString(); docType = docType + "_" + ElectronicSafeDocumentBL.DocumentType.CRTO.ToString(); destFullPath = ElectronicSafeDocumentBL.BuildClientUploadDocumentPath(docType, customer); filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, missionDoc.idMissionDocument, false); string destCRTOFilePath = System.IO.Path.Combine(destFullPath, filename); //If Upsideo model, generate pdf //If Firm model, merge uploaded file with the first and last page if (missionDoc.IsConventionRTOFromYourModel.HasValue && !missionDoc.IsConventionRTOFromYourModel.Value) { //MissionDocumentPdfGenerationBL.GenerateRTO(missionDoc, destCRTOFilePath, false); pageCount = MissionDocumentPdfGenerationBL.GenerateRTO(missionDoc.idMissionDocument, missionDoc.User, missionDoc.CustomerProspect, destCRTOFilePath, false); } else if (!string.IsNullOrEmpty(missionDoc.ConventionRTOFirmModelFileName)) { //Merge pdf filename = missionDoc.ConventionRTOFirmModelFileName; string uploadedDoc = System.IO.Path.Combine(destFullPath, filename); MissionDocumentPdfGenerationBL.GenerateRTOByMerge(missionDoc, uploadedDoc, destCRTOFilePath, false, out pageCount); } if (!System.IO.File.Exists(destCRTOFilePath)) { error = _languageData.GetContent("pdf_rto_n_a_pas_ete_genere_correctement"); } else { //B- Prepare object to send to signature SignatureParameter signatureParameter = new SignatureParameter() { SignatureFieldLabel = DTPClient.USER_ADVISER, SignaturePosition = new SignaturePosition() { Page = (pageCount > 0) ? pageCount : 4, //CRTO : 4pages X = 33, Y = 177 } }; signatureParametersRTO.Add(signatureParameter); signatureParameter = new SignatureParameter() { SignatureFieldLabel = DTPClient.USER_CUSTOMER, SignaturePosition = new SignaturePosition() { Page = (pageCount > 0) ? pageCount : 4, //CRTO : 4pages X = 120, Y = 177 } }; signatureParametersRTO.Add(signatureParameter); DocumentToSign docRTO = new DocumentToSign() { Label = _languageData.GetContent("convention_de_rto"), Description = _languageData.GetContent("convention_de_rto"), PathFilename = destCRTOFilePath, Type = DTPClient.DocumentTypes.APPENDIX3.ToString(), SignatureParameters = signatureParametersRTO }; documentsToSign.Add(docRTO); } } #endregion #region 3- Presentation etablissement if (missionDoc.AttachPresentation) { List<SignatureParameter> signatureParametersBS = new List<SignatureParameter>(); //A- PDF ? pageCount = 0; docType = ElectronicSafeDocumentBL.DocumentType.BS.ToString(); string firmDocumentPath = string.Format(@"{0}\FirmInstitution\FI_{1}", Server.MapPath("~/uploads"), missionDoc.CustomerProspect.FirmInstitution.idFirmInstitution); destFullPath = ElectronicSafeDocumentBL.BuildClientUploadDocumentPath(docType, customer); filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, missionDoc.idMissionDocument, false); string destBSFilePath = System.IO.Path.Combine(destFullPath, filename); //From firmModel or from upsideomodel if (missionDoc.IsPresentationFromModel) { //Merge pdf filename = missionDoc.CustomerProspect.FirmInstitution.PresentationFile; string uploadedDoc = System.IO.Path.Combine(firmDocumentPath, filename); if (System.IO.File.Exists(uploadedDoc)) { Upsilab.Business.Configuration.FirmInstitutionPdfGeneration.GeneratePresentationByMerge(missionDoc.CustomerProspect.FirmInstitution, uploadedDoc, destBSFilePath, false, out pageCount); } else { error = _languageData.GetContent("pdf_presentation_etab_n_existe_pas_ou"); } } else { //From upsideo model => generate it Upsilab.Business.Configuration.FirmInstitutionPdfGeneration.GeneratePresentation(missionDoc.CustomerProspect.FirmInstitution, destBSFilePath, false); } if (!System.IO.File.Exists(destBSFilePath)) { error = _languageData.GetContent("pdf_presentation_etab_n_existe_pas_ou"); } else { //B- Prepare object to send to signature SignatureParameter signatureParameter = new SignatureParameter() { SignatureFieldLabel = DTPClient.USER_ADVISER, SignaturePosition = new SignaturePosition() { Page = (pageCount > 0) ? pageCount : 6, //BS : 6pages X = 33, Y = 177 } }; signatureParametersBS.Add(signatureParameter); signatureParameter = new SignatureParameter() { SignatureFieldLabel = DTPClient.USER_CUSTOMER, SignaturePosition = new SignaturePosition() { Page = (pageCount > 0) ? pageCount : 6, //BS : 6pages X = 120, Y = 177 } }; signatureParametersBS.Add(signatureParameter); DocumentToSign docPE = new DocumentToSign() { Label = _languageData.GetContent("presentation_de_l_etab"), Description = _languageData.GetContent("presentation_de_l_etab"), PathFilename = destBSFilePath, Type = DTPClient.DocumentTypes.APPENDIX1.ToString(), SignatureParameters = signatureParametersBS }; documentsToSign.Add(docPE); } } #endregion #region 4- Fiche d'information legale FIL => DER //If the DER has been signed, don't include to the doc to sign bool hasSignedDER = !string.IsNullOrEmpty(customer.DerStatus) && customer.DerStatus == DerModel.Status.Completed.ToString(); if (!hasSignedDER || currentUser.IsEndUser()) //Permettre au client de signer le DER si deja joint pas le CGP { if (missionDoc.AttachInformationCard) { List<SignatureParameter> signatureParametersDER = new List<SignatureParameter>(); //A- PDF ? pageCount = 0; docType = ElectronicSafeDocumentBL.DocumentType.FIL.ToString(); string firmDocumentPath = string.Format(@"{0}\FirmInstitution\FI_{1}", Server.MapPath("~/uploads"), missionDoc.CustomerProspect.FirmInstitution.idFirmInstitution); destFullPath = ElectronicSafeDocumentBL.BuildClientUploadDocumentPath(docType, customer); filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, missionDoc.idMissionDocument, false); string destFILFilePath = System.IO.Path.Combine(destFullPath, filename); //From firmModel or from upsideomodel if (missionDoc.IsInformationCardFromModel) { //Merge pdf filename = missionDoc.CustomerProspect.FirmInstitution.LegalInformationFile; string uploadedDoc = System.IO.Path.Combine(firmDocumentPath, filename); if (System.IO.File.Exists(uploadedDoc)) { Upsilab.Business.Configuration.FirmInstitutionPdfGeneration.GenerateDERByMerge(missionDoc.CustomerProspect.FirmInstitution, uploadedDoc, destFILFilePath, false, out pageCount); } else { error = _languageData.GetContent("le_pdf_doc_entree_en_relation_n_existe_pas"); } } else { //From upsideo model => generate it pageCount = Upsilab.Business.Configuration.FirmInstitutionPdfGeneration.GenerateDER(missionDoc.CustomerProspect.FirmInstitution, missionDoc.CustomerProspect.idCustomer, destFILFilePath, false); } if (!System.IO.File.Exists(destFILFilePath)) { error = _languageData.GetContent("le_pdf_doc_entree_en_relation_n_existe_pas"); } else { //B- Prepare object to send to signature SignatureParameter signatureParameter = new SignatureParameter() { SignatureFieldLabel = DTPClient.USER_ADVISER, SignaturePosition = new SignaturePosition() { Page = (pageCount > 0) ? pageCount : 16, //DER : 16pages X = 33, Y = 177 } }; signatureParametersDER.Add(signatureParameter); signatureParameter = new SignatureParameter() { SignatureFieldLabel = DTPClient.USER_CUSTOMER, SignaturePosition = new SignaturePosition() { Page = (pageCount > 0) ? pageCount : 16, //DER : 16pages X = 120, Y = 177 } }; signatureParametersDER.Add(signatureParameter); DocumentToSign docDER = new DocumentToSign() { Label = _languageData.GetContent("doc_entree_en_relation"), Description = _languageData.GetContent("doc_entree_en_relation"), PathFilename = destFILFilePath, Type = DTPClient.DocumentTypes.APPENDIX2.ToString(), SignatureParameters = signatureParametersDER }; documentsToSign.Add(docDER); } } } #endregion #region 5- Documents annexes var lstAppendixDocs = MissionDocumentAppendixBL.GetMissionDocumentAppendixByMissionDocument(missionDoc.idMissionDocument); //order by datecreated docType = ElectronicSafeDocumentBL.DocumentType.AX.ToString(); destFullPath = ElectronicSafeDocumentBL.BuildClientUploadDocumentPath(docType, customer); int appendixNumber = 4; foreach (var appendixDoc in lstAppendixDocs) { List<SignatureParameter> signatureParametersAppendixDoc = new List<SignatureParameter>(); //A- Generate pdf pageCount = 0; filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, appendixDoc.idMissionDocumentAppendix, false); var destPathFilename = System.IO.Path.Combine(destFullPath, filename); var sourceAppendixPathFilename = System.IO.Path.Combine(System.Web.HttpContext.Current.Server.MapPath(string.Format("~{0}", appendixDoc.Filename))); //On PREPROD - PROD server : always create doc to extranet_user not to extranet_client sourceAppendixPathFilename = sourceAppendixPathFilename.Replace(@"extranet_client", @"user"); //Merge pdf : + page de garde (1ere page) et page de signature (2e page) MissionDocumentPdfGenerationBL.GenerateAppendixDocByMerge(appendixDoc, sourceAppendixPathFilename, destPathFilename, false, out pageCount); if (!System.IO.File.Exists(destPathFilename)) { error = _languageData.GetContent("pdf_rto_n_a_pas_ete_genere_correctement"); //TODO } else { //B- Prepare object to send to signature //Advisor signature field SignatureParameter signatureParameter = new SignatureParameter() { SignatureFieldLabel = DTPClient.USER_ADVISER, SignaturePosition = new SignaturePosition() { Page = pageCount, X = 33, Y = 177 } }; signatureParametersAppendixDoc.Add(signatureParameter); //Customer signature field signatureParameter = new SignatureParameter() { SignatureFieldLabel = DTPClient.USER_CUSTOMER, SignaturePosition = new SignaturePosition() { Page = pageCount, X = 120, Y = 177 } }; signatureParametersAppendixDoc.Add(signatureParameter); //Document to sign DocumentToSign appendixDocumentToSign = new DocumentToSign() { Label = (!string.IsNullOrEmpty(appendixDoc.Designation)) ? appendixDoc.Designation : "Document annexe", Description = (!string.IsNullOrEmpty(appendixDoc.Designation)) ? appendixDoc.Designation : "Document annexe", PathFilename = destPathFilename, Type = string.Format("{0}{1}", DTPClient.APPENDIX.ToString(), appendixNumber), SignatureParameters = signatureParametersAppendixDoc }; documentsToSign.Add(appendixDocumentToSign); } appendixNumber++; } #endregion return documentsToSign; }
public RegulatoryDocumentModel GetViewDataModel(int idParentOption, Guid idTargetCustomer, bool isMissionLetter) { RegulatoryDocumentModel regulatoryDocumentModel = new RegulatoryDocumentModel(); regulatoryDocumentModel.IsMissionLetter = isMissionLetter; regulatoryDocumentModel.idOptionParent = idParentOption; regulatoryDocumentModel.TargetCustomerProspect = CustomerProspectBL.GetCustomerProspectById(idTargetCustomer); //1- Get latest mission document for the customer or create if no doc MissionDocument missionDoc = MissionDocumentBL.GetLatestMissionDocumentByIdCustomer(idTargetCustomer, isMissionLetter); //Mission letter //2- If null, create one //If current user is END-USER, don't create new document var currentUser = SessionManager.GetUserSession(); if (!currentUser.IsEndUser()) { if (missionDoc == null) { missionDoc = this.CreateMissionDocument(regulatoryDocumentModel, isMissionLetter); //update customer status if (isMissionLetter) regulatoryDocumentModel.TargetCustomerProspect.LetterStatus = RegulatoryDocumentModel.Status.Created.ToString(); else regulatoryDocumentModel.TargetCustomerProspect.MissionStatus = RegulatoryDocumentModel.Status.Created.ToString(); CustomerProspectBL.Update(regulatoryDocumentModel.TargetCustomerProspect); } else if (missionDoc.Status == RegulatoryDocumentModel.Status.Canceled.ToString() || missionDoc.Status == RegulatoryDocumentModel.Status.Completed.ToString()) { //3- Check if canceled or completed : create a new document in progress //missionDoc = this.CreateMissionDocument(regulatoryDocumentModel, isMissionLetter, RegulatoryDocumentModel.Status.InProgress); //Update : #4535 / #4536 : always create an initial mission document => status = Created missionDoc = this.CreateMissionDocument(regulatoryDocumentModel, isMissionLetter); //update customer if (isMissionLetter) regulatoryDocumentModel.TargetCustomerProspect.LetterStatus = RegulatoryDocumentModel.Status.Created.ToString(); else regulatoryDocumentModel.TargetCustomerProspect.MissionStatus = RegulatoryDocumentModel.Status.Created.ToString(); CustomerProspectBL.Update(regulatoryDocumentModel.TargetCustomerProspect); } } else { if (missionDoc == null) { missionDoc = new MissionDocument(); } } regulatoryDocumentModel.MissionDocument = missionDoc; //4- Retrieve Options and Attributes data var option = OptionBL.GetOptionsByIdParent(idParentOption); // if PP bool isPP = (regulatoryDocumentModel.TargetCustomerProspect.IsCorporation.HasValue) ? ((regulatoryDocumentModel.TargetCustomerProspect.IsCorporation.Value) ? false : true) : false; if (isPP) { //Remove some options for PM option.RemoveAll(o => o.NameKey.Contains("Client_Letter_PM_")); } else { int indexFirstPP = 0; // sert de repère pour l'index d'insertion de List PL var optionRepere = option.Where(o => o.NameKey.CompareTo("Client_Letter_029") == 0).FirstOrDefault(); if (optionRepere != null) { indexFirstPP = option.IndexOf(optionRepere); } var lstOptsPM = option.Where(o => o.NameKey.Contains("Client_Letter_PM_")).ToList(); // à ajouter dans un rang(position) précis un peu plus tard //Remove some options for PP option.RemoveAll(o => o.idParent == 151); option.RemoveAll(o => o.NameKey.CompareTo("Client_Letter_029") == 0); option.RemoveAll(o => o.NameKey.Contains("Client_Letter_PM_")); // à supprimer car ne respecte pas le rang (position des éléments) option.InsertRange(indexFirstPP, lstOptsPM); } if (option != null) { regulatoryDocumentModel.Option = option.ToList(); } //5- Update Data if post ? if (Request.RequestType.ToLower() != "get") { UpdateData(regulatoryDocumentModel); } //6- Retrieve Option Value and OptionAttribute Value regulatoryDocumentModel.OptionValue = CustomerProspectOptionBL.GetOptionValueListWithIdCustomerProspectAndIdParentOption(idTargetCustomer, idParentOption); //For new RM : recall Remuneration value from LM if (!isMissionLetter && regulatoryDocumentModel.MissionDocument.Status == RegulatoryDocumentModel.Status.Created.ToString()) { regulatoryDocumentModel.LM_RemunerationOptionValues = CustomerProspectOptionBL.GetOptionValueListWithIdCustomerProspectAndIdOptions(idTargetCustomer, new List<Int32>() { 131, 133 }); //131 : remuneration; 133 : honoraire regulatoryDocumentModel = GetRemunerationDefaultValueFromLMtoRM(regulatoryDocumentModel); } //7- Signature log regulatoryDocumentModel.SignatureInformation = this.BuildSignatureLog(regulatoryDocumentModel.MissionDocument); //8- Map data to View Model regulatoryDocumentModel.OptionData = DeriveDataForView(regulatoryDocumentModel); //9- Retrieve CustomEnum int idCurrentLanguage = SessionManager.GetCurrentLanguage().idLanguageType; IDictionary<int, List<DropDownEnumModel>> dicoDropDownEnumModel = CustomEnumBL.GetCustomEnums(idCurrentLanguage); regulatoryDocumentModel.EnumPaymentValue = dicoDropDownEnumModel[CustomEnumBL.PaymentType]; //10- Check credits regulatoryDocumentModel.InsufficientCreditMessage = this.CheckInsufficientCredits(regulatoryDocumentModel); //11- Signature controller regulatoryDocumentModel.SignatureController = SignatureDocumentBL.GetSignatureControllerName(missionDoc.Status, missionDoc.idDTPUserAccess); return regulatoryDocumentModel; }
private string BuildSignatureLog(MissionDocument missionDoc) { string signatureLog = string.Empty; //Conseiller name string userAdviserName = string.Empty; if (missionDoc.User != null) { userAdviserName = missionDoc.User.EntireName + "<br />"; } if (missionDoc.Status == RegulatoryDocumentModel.Status.InProgress.ToString()) { signatureLog = string.Empty; } else if (missionDoc.Status == RegulatoryDocumentModel.Status.WaitingForAdviserSignature.ToString()) { //If not signed by adviser if (!missionDoc.SignedByCustomer) { signatureLog = string.Format("<li>En attente signature Conseiller<br />{0}</li>", userAdviserName); } else { //Already signed by the client signatureLog = string.Format(@"<li>Signé par le Client<br />le {0}</li> <li>En attente signature Conseiller<br />{1}</li>", missionDoc.DateCustomerSignature.Value.ToShortDateString(), userAdviserName); } } else if (missionDoc.Status == RegulatoryDocumentModel.Status.WaitingForClientSignature.ToString()) { //If not signed by adviser if (!missionDoc.SignedByAdviser) { signatureLog = "<li>En attente signature Client</li>"; } else { signatureLog = string.Format(@"<li>Signé par le Conseiller<br />{0}le {1}</li> <li>En attente signature Client</li>", userAdviserName, missionDoc.DateAdviserSignature.Value.ToShortDateString()); } } else if (missionDoc.Status == RegulatoryDocumentModel.Status.Completed.ToString()) { //Case signed manually if (!missionDoc.DateAdviserSignature.HasValue) { signatureLog = "<li>Signé manuellement par <br /> le Conseiller et le Client </li>"; } else { string adviserText = string.Format(@"<li>Signé par le Conseiller<br />{0}le {1}</li>", userAdviserName, missionDoc.DateAdviserSignature.Value.ToShortDateString()); string clientText = string.Format(@"<li>Signé par le Client<br />le {0}</li>", missionDoc.DateCustomerSignature.Value.ToShortDateString()); if (DateTime.Compare(missionDoc.DateAdviserSignature.Value, missionDoc.DateCustomerSignature.Value) < 0) //Conseille signe en premier { signatureLog = string.Concat(adviserText, clientText); } else { signatureLog = string.Concat(clientText, adviserText); } } } return signatureLog; }
private string GenerateRTODocument(MissionDocument missionDoc, bool forceDownload) { string urlGeneratedDoc = string.Empty; int pageCount = 0; try { CustomerProspect customer = missionDoc.CustomerProspect; string docType = ElectronicSafeDocumentBL.DocumentType.CRTO.ToString(); string documentPath = ElectronicSafeDocumentBL.BuildClientDocumentPath(docType, customer); string destDocumentFullPath = System.IO.Path.Combine(Server.MapPath("~/uploads"), documentPath); string filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, customer.idCustomer); string destFilePath = System.IO.Path.Combine(destDocumentFullPath, filename); //If Upsideo model, generate pdf //If Firm model, merge uploaded file with the first and last page if (missionDoc.IsConventionRTOFromYourModel.HasValue && missionDoc.IsConventionRTOFromYourModel.Value) { //1 : Génération du PDF string uploadedDoc = System.IO.Path.Combine(Server.MapPath("~/uploads"), documentPath, missionDoc.FileName);//TODO MissionDocumentPdfGenerationBL.GenerateRTOByMerge(missionDoc, uploadedDoc, destFilePath, forceDownload, out pageCount); } else { MissionDocumentPdfGenerationBL.GenerateRTO(missionDoc.idMissionDocument,missionDoc.User,missionDoc.CustomerProspect, destFilePath, forceDownload); } urlGeneratedDoc = Url.Content(string.Format("~/uploads/{0}/{1}", documentPath, filename).Replace("\\", "/")); } catch (Exception ex) { Log.AppendException(ex); } return urlGeneratedDoc; }
private string GenerateMissionDocument(MissionDocument missionDoc, bool forceDownload) { string urlGeneratedDoc = string.Empty; int pageCount = 0; try { CustomerProspect customer = missionDoc.CustomerProspect; string docType = (missionDoc.IsLetter) ? ElectronicSafeDocumentBL.DocumentType.LM.ToString() : ElectronicSafeDocumentBL.DocumentType.RM.ToString(); string documentPath = ElectronicSafeDocumentBL.BuildClientDocumentPath(docType, customer); string destDocumentFullPath = System.IO.Path.Combine(Server.MapPath("~/uploads"), documentPath); string filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, customer.idCustomer); string destFilePath = System.IO.Path.Combine(destDocumentFullPath, filename); //If Upsideo model, generate pdf //If Firm model, merge uploaded file with the first and last page if (missionDoc.IsUpsideoModel) { //1 : Génération du PDF if (missionDoc.IsLetter) // lettre de mission { bool isPP = (missionDoc.CustomerProspect.IsCorporation.HasValue) ? ((missionDoc.CustomerProspect.IsCorporation.Value) ? false : true) : false; if (isPP) { MissionDocumentPdfGenerationBL.GeneratePP_EngagementLetter(missionDoc, destFilePath, forceDownload); } else { MissionDocumentPdfGenerationBL.GeneratePM_EngagementLetter(missionDoc, destFilePath, forceDownload); } } else // Rapport de mission { MissionDocumentPdfGenerationBL.Generate_MissionReport(missionDoc, destFilePath, forceDownload); } } else { string uploadedDoc = System.IO.Path.Combine(Server.MapPath("~/uploads"), documentPath, missionDoc.FileName); if (missionDoc.IsLetter) { MissionDocumentPdfGenerationBL.GenerateEngagementLetterByMerge(missionDoc, uploadedDoc, destFilePath, forceDownload, out pageCount); } else { MissionDocumentPdfGenerationBL.GenerateReportLetterByMerge(missionDoc, uploadedDoc, destFilePath, forceDownload, out pageCount); } } urlGeneratedDoc = Url.Content(string.Format("~/uploads/{0}/{1}", documentPath, filename).Replace("\\", "/")); } catch (Exception ex) { Log.AppendException(ex); } return urlGeneratedDoc; }
private MissionDocument CreateMissionDocument(RegulatoryDocumentModel regulatoryDocumentModel, bool isLetter, RegulatoryDocumentModel.Status docStatus = RegulatoryDocumentModel.Status.Created) { MissionDocument missionDoc = new MissionDocument() { idMissionDocument = GuidHelper.GenerateGuid(), idCustomerProspect = regulatoryDocumentModel.TargetCustomerProspect.idCustomer, Status = docStatus.ToString(), DateCreated = DateTime.Now, DateUpdated = DateTime.Now, IsLetter = isLetter, AttachInformationCard = true, IsInformationCardFromModel = true, AttachPresentation = true, IsPresentationFromModel = true }; MissionDocumentBL.InsertMissionDocument(missionDoc); return missionDoc; }
public static string BuildMissionDocumentName(MissionDocument missionDoc) { string docType = (missionDoc.IsLetter) ? "LM" : "RM"; string documentName = BuildDocumentName(docType, missionDoc.idMissionDocument, false); return documentName; }
public ActionResult SignerDocumentMissionParConseiller(string id) { string error = string.Empty; string urlIHM_Dictao = string.Empty; int pageCount = 0; MissionDocument missionDoc = new MissionDocument(); List<DocumentToSign> documentsToSign = new List<DocumentToSign>(); try { // Id mission doc = id in parameter missionDoc = MissionDocumentBL.GetMissionDocumentById(new Guid(id)); if (missionDoc == null) { error = LanguageData.GetContent("selectionner_un_doc_a_signer"); } else { CustomerProspect customer = missionDoc.CustomerProspect; SignatureParameters signatureParameters = null; #region 1- Mission document //A- Build pdf mission document to sign string docType = (missionDoc.IsLetter) ? ElectronicSafeDocumentBL.DocumentType.LM.ToString() : ElectronicSafeDocumentBL.DocumentType.RM.ToString(); string destFullPath = ElectronicSafeDocumentBL.BuildClientUploadDocumentPath(docType, customer); string filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, missionDoc.idMissionDocument, false); string destMissionDocFilePath = System.IO.Path.Combine(destFullPath, filename); //If Upsideo model, generate pdf //If Firm model, merge uploaded file with the first and last page if (missionDoc.IsUpsideoModel) { //1 : Génération du PDF if (missionDoc.IsLetter) //Lettre de Mission { bool isPP = (missionDoc.CustomerProspect.IsCorporation.HasValue) ? ((missionDoc.CustomerProspect.IsCorporation.Value) ? false : true) : false; if (isPP) { MissionDocumentPdfGenerationBL.GeneratePP_EngagementLetter(missionDoc, destMissionDocFilePath, false); } else { MissionDocumentPdfGenerationBL.GeneratePM_EngagementLetter(missionDoc, destMissionDocFilePath, false); } } else // Rapport de mission { MissionDocumentPdfGenerationBL.Generate_MissionReport(missionDoc, destMissionDocFilePath, false); } } else { //Merge pdf filename = missionDoc.FileName; string uploadedDoc = System.IO.Path.Combine(destFullPath, filename); if (missionDoc.IsLetter) { MissionDocumentPdfGenerationBL.GenerateEngagementLetterByMerge(missionDoc, uploadedDoc, destMissionDocFilePath, false, out pageCount); } else { MissionDocumentPdfGenerationBL.GenerateReportLetterByMerge(missionDoc, uploadedDoc, destMissionDocFilePath, false, out pageCount); } } if (!System.IO.File.Exists(destMissionDocFilePath)) { error = LanguageData.GetContent("doc_n_a_pas_ete_genere_correctement"); } else { //B- Prepare object to sign signatureParameters = new SignatureParameters() { page = (pageCount > 0) ? pageCount : (missionDoc.IsLetter) ? 13 : 9, //LM : 10pages; RM : 8pages x_adviser = 33, x_customer = 120, y = 177 }; string typeDocLabel = (missionDoc.IsLetter) ? LanguageData.GetContent("lettre_de_mission") : LanguageData.GetContent("rapport_de_mission"); DocumentToSign docMD = new DocumentToSign() { Label = typeDocLabel, Description = typeDocLabel, PathFilename = destMissionDocFilePath, Type = DTPClient.DocumentTypes.CONTRACT.ToString(), SignatureParameters = signatureParameters }; documentsToSign.Add(docMD); } #endregion #region 2- Convention RTO Document if (missionDoc.AttachConventionRTO.HasValue && missionDoc.AttachConventionRTO.Value) { //A- Generate CRTO pdf pageCount = 0; docType = (missionDoc.IsLetter) ? ElectronicSafeDocumentBL.DocumentType.LM.ToString() : ElectronicSafeDocumentBL.DocumentType.RM.ToString(); docType = docType + "_" + ElectronicSafeDocumentBL.DocumentType.CRTO.ToString(); destFullPath = ElectronicSafeDocumentBL.BuildClientUploadDocumentPath(docType, customer); filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, missionDoc.idMissionDocument, false); string destCRTOFilePath = System.IO.Path.Combine(destFullPath, filename); //If Upsideo model, generate pdf //If Firm model, merge uploaded file with the first and last page if (missionDoc.IsConventionRTOFromYourModel.HasValue && !missionDoc.IsConventionRTOFromYourModel.Value) { // MissionDocumentPdfGenerationBL.GenerateRTO(missionDoc, destCRTOFilePath, false); pageCount = MissionDocumentPdfGenerationBL.GenerateRTO(missionDoc.idMissionDocument, missionDoc.User, missionDoc.CustomerProspect, destCRTOFilePath, false); } else if (!string.IsNullOrEmpty(missionDoc.ConventionRTOFirmModelFileName)) { //Merge pdf filename = missionDoc.ConventionRTOFirmModelFileName; string uploadedDoc = System.IO.Path.Combine(destFullPath, filename); MissionDocumentPdfGenerationBL.GenerateRTOByMerge(missionDoc, uploadedDoc, destCRTOFilePath, false, out pageCount); } if (!System.IO.File.Exists(destCRTOFilePath)) { error = LanguageData.GetContent("pdf_rto_n_a_pas_ete_genere_correctement"); } else { //B- Prepare object to send to signature signatureParameters = new SignatureParameters() { page = (pageCount > 0) ? pageCount : 4, //CRTO : 4pages x_adviser = 33, x_customer = 120, y = 177 }; DocumentToSign docRTO = new DocumentToSign() { Label = LanguageData.GetContent("convention_de_rto"), Description = LanguageData.GetContent("convention_de_rto"), PathFilename = destCRTOFilePath, Type = DTPClient.DocumentTypes.APPENDIX3.ToString(), SignatureParameters = signatureParameters }; documentsToSign.Add(docRTO); } } #endregion #region 3- Presentation etablissement if (missionDoc.AttachPresentation) { //A- PDF ? pageCount = 0; docType = ElectronicSafeDocumentBL.DocumentType.BS.ToString(); string firmDocumentPath = string.Format(@"{0}\FirmInstitution\FI_{1}", Server.MapPath("~/uploads"), missionDoc.CustomerProspect.FirmInstitution.idFirmInstitution); destFullPath = ElectronicSafeDocumentBL.BuildClientUploadDocumentPath(docType, customer); filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, missionDoc.idMissionDocument, false); string destBSFilePath = System.IO.Path.Combine(destFullPath, filename); //From firmModel or from upsideomodel if (missionDoc.IsPresentationFromModel) { //Merge pdf filename = missionDoc.CustomerProspect.FirmInstitution.PresentationFile; string uploadedDoc = System.IO.Path.Combine(firmDocumentPath, filename); if (System.IO.File.Exists(uploadedDoc)) { Upsilab.Business.Configuration.FirmInstitutionPdfGeneration.GeneratePresentationByMerge(missionDoc.CustomerProspect.FirmInstitution, uploadedDoc, destBSFilePath, false, out pageCount); } else { error = LanguageData.GetContent("pdf_presentation_etab_n_existe_pas_ou"); } } else { //From upsideo model => generate it pageCount = Upsilab.Business.Configuration.FirmInstitutionPdfGeneration.GeneratePresentation(missionDoc.CustomerProspect.FirmInstitution, destBSFilePath, false); } if (!System.IO.File.Exists(destBSFilePath)) { error = LanguageData.GetContent("pdf_presentation_etab_n_existe_pas_ou"); } else { //B- Prepare object to send to signature signatureParameters = new SignatureParameters() { //page = (pageCount > 0) ? pageCount : 6, //BS : 6pages page = pageCount, x_adviser = 33, x_customer = 120, y = 177 }; DocumentToSign docPE = new DocumentToSign() { Label = LanguageData.GetContent("presentation_de_l_etab"), Description = LanguageData.GetContent("presentation_de_l_etab"), PathFilename = destBSFilePath, Type = DTPClient.DocumentTypes.APPENDIX1.ToString(), SignatureParameters = signatureParameters }; documentsToSign.Add(docPE); } } #endregion #region 4- Fiche d'information legale FIL => DER if (string.IsNullOrEmpty(customer.DerStatus) || (!string.IsNullOrEmpty(customer.DerStatus) && customer.DerStatus != DerModel.Status.Completed.ToString())) { if (missionDoc.AttachInformationCard) { //A- PDF ? pageCount = 0; docType = ElectronicSafeDocumentBL.DocumentType.FIL.ToString(); string firmDocumentPath = string.Format(@"{0}\FirmInstitution\FI_{1}", Server.MapPath("~/uploads"), missionDoc.CustomerProspect.FirmInstitution.idFirmInstitution); destFullPath = ElectronicSafeDocumentBL.BuildClientUploadDocumentPath(docType, customer); filename = ElectronicSafeDocumentBL.BuildDocumentName(docType, missionDoc.idMissionDocument, false); string destFILFilePath = System.IO.Path.Combine(destFullPath, filename); //From firmModel or from upsideomodel if (missionDoc.IsInformationCardFromModel) { //Merge pdf filename = missionDoc.CustomerProspect.FirmInstitution.LegalInformationFile; string uploadedDoc = System.IO.Path.Combine(firmDocumentPath, filename); if (System.IO.File.Exists(uploadedDoc)) { Upsilab.Business.Configuration.FirmInstitutionPdfGeneration.GenerateDERByMerge(missionDoc.CustomerProspect.FirmInstitution, uploadedDoc, destFILFilePath, false, out pageCount); } else { error = LanguageData.GetContent("le_pdf_doc_entree_en_relation_n_existe_pas"); } } else { //From upsideo model => generate it pageCount = Upsilab.Business.Configuration.FirmInstitutionPdfGeneration.GenerateDER(missionDoc.CustomerProspect.FirmInstitution, missionDoc.CustomerProspect.idCustomer, destFILFilePath, false); } if (!System.IO.File.Exists(destFILFilePath)) { error = LanguageData.GetContent("le_pdf_doc_entree_en_relation_n_existe_pas"); } else { //B- Prepare object to send to signature signatureParameters = new SignatureParameters() { page = (pageCount > 0) ? pageCount : 16, //DER : 14pages x_adviser = 33, x_customer = 120, y = 177 }; DocumentToSign docDER = new DocumentToSign() { Label = LanguageData.GetContent("doc_entree_en_relation"), Description = LanguageData.GetContent("doc_entree_en_relation"), PathFilename = destFILFilePath, Type = DTPClient.DocumentTypes.APPENDIX2.ToString(), SignatureParameters = signatureParameters }; documentsToSign.Add(docDER); } } } #endregion //Signature if (documentsToSign.Count == 0) { error = LanguageData.GetContent("aucun_doc_a_signer_veuillez"); } if (string.IsNullOrEmpty(error)) { // Sign the document mission Upsilab.Data.Model.User userAdviser = (missionDoc.User != null) ? missionDoc.User : Upsilab.Business.Utility.SessionManager.GetUserSession(); urlIHM_Dictao = SignatureDocumentBL_4_1.SignMissionDocumentByAdviser(missionDoc.idMissionDocument, documentsToSign, userAdviser); } } } catch (Exception ex) { Upsilab.Business.Log.Log.AppendException(ex); error = ex.Message; } if (!string.IsNullOrEmpty(error)) { string missionDocLabel = (missionDoc.IsLetter) ? LanguageData.GetContent("lettre_de_mission") : LanguageData.GetContent("rapport_de_mission"); SignatureModel signatureModel = new SignatureModel() { H1Title = (missionDoc.IsLetter) ? LanguageData.GetContent("lettre_de_mission") : LanguageData.GetContent("rapport_de_mission"), HeadTitle = string.Format("Signature {0}", missionDocLabel), ErrorMessage = error }; return View("AllerSignature", signatureModel); } else { return Redirect(urlIHM_Dictao); } }
public ActionResult SignerDocumentMissionParClient(string id) { string error = string.Empty; string urlIHM_Dictao = string.Empty; int pageCount = 0; MissionDocument missionDoc = new MissionDocument(); try { // Id latest mission document = id in parameter if (string.IsNullOrEmpty(id)) { error = LanguageData.GetContent("selectionner_un_doc_a_signer"); } else { missionDoc = MissionDocumentBL.GetMissionDocumentById(new Guid(id)); if (missionDoc == null) { error = LanguageData.GetContent("selectionner_un_doc_a_signer"); } else { // Sign the mission document (Customer signs secondly) urlIHM_Dictao = SignatureDocumentBL_4_1.SignMissionDocumentByCustomer(missionDoc.idMissionDocument, string.Empty, pageCount); } } } catch (Exception ex) { //Log error = ex.Message; } if (!string.IsNullOrEmpty(error)) { string missionDocLabel = (missionDoc.IsLetter) ? LanguageData.GetContent("lettre_de_mission") : LanguageData.GetContent("rapport_de_mission"); SignatureModel signatureModel = new SignatureModel() { H1Title = (missionDoc.IsLetter) ? LanguageData.GetContent("lettre_de_mission") : LanguageData.GetContent("rapport_de_mission"), HeadTitle = string.Format(LanguageData.GetContent("signature_"), missionDocLabel), ErrorMessage = error }; return View("AllerSignature", signatureModel); } else { return Redirect(urlIHM_Dictao); } }