Ejemplo n.º 1
0
        public void SignDocuments(Guid applicationId)
        {
            SigniflowRepo _signiflow = new SigniflowRepo();

            var application = _context.Applications
                              .Where(c => c.Id == applicationId)
                              .Include(c => c.Documents)
                              .Include(c => c.User)
                              .Include(c => c.Steps)
                              .First();

            var advisorId = _context.AdvisorAdvise
                            .Where(c => c.ApplicationId == applicationId)
                            .First()
                            .AdvisorId;

            var advisor = _context.Users
                          .Where(c => c.Id == advisorId)
                          .Include(c => c.BrokerDetails)
                          .First();

            application.Documents.ToList().ForEach(doc =>
            {
                var docTypeRequireSignature = new List <DocumentTypesEnum>()
                {
                    DocumentTypesEnum.IntorLetter,
                    DocumentTypesEnum.FinancialNeedsAnalysis,
                    DocumentTypesEnum.PrimarySchedule,
                    DocumentTypesEnum.RiskProfile,
                    DocumentTypesEnum.RecordOfAdvise,
                    DocumentTypesEnum.FspMandate,
                    DocumentTypesEnum.Dividende,
                };

                // determine wether this document needs a signature
                if (docTypeRequireSignature.Contains(doc.DocumentType))
                {
                    // create signer list
                    List <SignerListItemDto> signers = doc.DocumentType switch
                    {
                        DocumentTypesEnum.IntorLetter => new List <SignerListItemDto>()
                        {
                            _signiflow.CreateSignerListItem(new SignerDto()
                            {
                                Signature = Convert.ToBase64String(application.User.Signature),
                                FirstName = application.User.FirstName,
                                LastName  = application.User.LastName,
                                Email     = application.User.Email,
                                IdNo      = application.User.IdNumber,
                                Mobile    = application.User.MobileNumber,
                                XField    = 40,
                                YField    = 690,
                                HField    = 90,
                                WField    = 120,
                                Page      = 2
                            })
                        },
                        DocumentTypesEnum.FinancialNeedsAnalysis => new List <SignerListItemDto>()
                        {
                            _signiflow.CreateSignerListItem(new SignerDto()
                            {
                                Signature = Convert.ToBase64String(application.User.Signature),
                                FirstName = application.User.FirstName,
                                LastName  = application.User.LastName,
                                Email     = application.User.Email,
                                IdNo      = application.User.IdNumber,
                                Mobile    = application.User.MobileNumber,
                                XField    = 350,
                                YField    = 575,
                                HField    = 90,
                                WField    = 120,
                                Page      = 1,
                            }),
                            _signiflow.CreateSignerListItem(new SignerDto()
                            {
                                Signature = Convert.ToBase64String(advisor.Signature),
                                FirstName = advisor.FirstName,
                                LastName  = advisor.LastName,
                                Email     = advisor.Email,
                                IdNo      = advisor.IdNumber,
                                Mobile    = advisor.MobileNumber,
                                XField    = 440,
                                YField    = 635,
                                HField    = 90,
                                WField    = 120,
                                Page      = 1,
                            })
                        },
                        DocumentTypesEnum.PrimarySchedule => new List <SignerListItemDto>()
                        {
                            _signiflow.CreateSignerListItem(new SignerDto()
                            {
                                Signature = Convert.ToBase64String(application.User.Signature),
                                FirstName = application.User.FirstName,
                                LastName  = application.User.LastName,
                                Email     = application.User.Email,
                                IdNo      = application.User.IdNumber,
                                Mobile    = application.User.MobileNumber,
                                XField    = 180,
                                YField    = 110,
                                Page      = 5
                            })
                        },
                        DocumentTypesEnum.RiskProfile => new List <SignerListItemDto>()
                        {
                            _signiflow.CreateSignerListItem(new SignerDto()
                            {
                                Signature = Convert.ToBase64String(application.User.Signature),
                                FirstName = application.User.FirstName,
                                LastName  = application.User.LastName,
                                Email     = application.User.Email,
                                IdNo      = application.User.IdNumber,
                                Mobile    = application.User.MobileNumber,
                                XField    = 160,
                                YField    = 320,
                                HField    = 90,
                                WField    = 120,
                                Page      = 2
                            })
                        },
                        DocumentTypesEnum.RecordOfAdvise => new List <SignerListItemDto>()
                        {
                            _signiflow.CreateSignerListItem(new SignerDto()
                            {
                                Signature = Convert.ToBase64String(application.User.Signature),
                                FirstName = application.User.FirstName,
                                LastName  = application.User.LastName,
                                Email     = application.User.Email,
                                IdNo      = application.User.IdNumber,
                                Mobile    = application.User.MobileNumber,
                                XField    = 120,
                                YField    = 590,
                                Page      = 4
                            }),
                            _signiflow.CreateSignerListItem(new SignerDto()
                            {
                                Signature = Convert.ToBase64String(advisor.Signature),
                                FirstName = advisor.FirstName,
                                LastName  = advisor.LastName,
                                Email     = advisor.Email,
                                IdNo      = advisor.IdNumber,
                                Mobile    = advisor.MobileNumber,
                                XField    = 380,
                                YField    = 580,
                                Page      = 4
                            })
                        },
                        DocumentTypesEnum.FspMandate => FspMandateSigningList(application, advisor),
                        DocumentTypesEnum.Dividende => new List <SignerListItemDto>()
                        {
                            _signiflow.CreateSignerListItem(new SignerDto()
                            {
                                Signature       = Convert.ToBase64String(application.User.Signature),
                                FirstName       = application.User.FirstName,
                                LastName        = application.User.LastName,
                                Email           = application.User.Email,
                                IdNo            = application.User.IdNumber,
                                Mobile          = application.User.MobileNumber,
                                IncludeSignedBy = false,
                                XField          = 470,
                                YField          = 725,
                                HField          = 60,
                                WField          = 80,
                                Page            = 1
                            }),
                            _signiflow.CreateSignerListItem(new SignerDto()
                            {
                                Signature = Convert.ToBase64String(application.User.Signature),
                                FirstName = application.User.FirstName,
                                LastName  = application.User.LastName,
                                Email     = application.User.Email,
                                IdNo      = application.User.IdNumber,
                                Mobile    = application.User.MobileNumber,
                                XField    = 400,
                                YField    = 145,
                                Page      = 2
                            })
                        },
                    };

                    var ceremony = _signiflow.CreateMultipleSignersCeremony(doc.DocuemtnData,
                                                                            doc.Name, signers);

                    doc.DocuemtnData = Convert.FromBase64String(
                        _signiflow.RunMultiSignerCeremony(ceremony));

                    _context.ApplicationDocuments.Update(doc);
                }
            });

            // update application that documents have now been signed
            application.DocumentsSigned = true;
            _context.Applications.Update(application);

            // update application step process application now completed
            var step = _context.ApplicationSteps.First(
                c => c.ApplicationId == applicationId &&
                c.StepType == ApplicationStepTypesEnum.ProcessApplication);

            step.ActiveStep = false;
            step.Complete   = true;
            _context.ApplicationSteps.Update(step);

            _context.SaveChanges();
        }
Ejemplo n.º 2
0
        private List <SignerListItemDto> FspMandateSigningList(ApplicationsModel application, UserModel advisor)
        {
            SigniflowRepo _signiflow = new SigniflowRepo();
            var           signerList = new List <SignerListItemDto>();

            var mandate = _context.FspMandatates
                          .Where(c => c.ApplicationId == application.Id)
                          .First();

            var pageList = mandate.Objective[0].ToString() == "L" ?
                           new List <int> {
                2, 3, 4, 5, 6, 7, 8
            } :                                         // Limited Discretiuon
            new List <int> {
                2, 3, 4, 5, 6, 7, 9
            };                                         // Full Discretion

            pageList.ForEach(p => signerList.Add(_signiflow.CreateSignerListItem(new SignerDto()
            {
                Signature       = Convert.ToBase64String(application.User.Signature),
                FirstName       = application.User.FirstName,
                LastName        = application.User.LastName,
                Email           = application.User.Email,
                IdNo            = application.User.IdNumber,
                Mobile          = application.User.MobileNumber,
                IncludeSignedBy = false,
                XField          = 480,
                YField          = 775,
                HField          = 60,
                WField          = 80,
                Page            = p
            })));

            signerList.Add(_signiflow.CreateSignerListItem(new SignerDto()
            {   // client
                Signature = Convert.ToBase64String(application.User.Signature),
                FirstName = application.User.FirstName,
                LastName  = application.User.LastName,
                Email     = application.User.Email,
                IdNo      = application.User.IdNumber,
                Mobile    = application.User.MobileNumber,
                XField    = 160,
                YField    = 590,
                Page      = 7
            }));

            signerList.Add(_signiflow.CreateSignerListItem(new SignerDto()
            {   // client
                Signature = Convert.ToBase64String(application.User.Signature),
                FirstName = application.User.FirstName,
                LastName  = application.User.LastName,
                Email     = application.User.Email,
                IdNo      = application.User.IdNumber,
                Mobile    = application.User.MobileNumber,
                XField    = mandate.Objective[0].ToString() == "L" ? 120 : 160,
                YField    = mandate.Objective[0].ToString() == "L" ? 680 : 520,
                Page      = mandate.Objective[0].ToString() == "L" ? 9 : 8
            }));

            signerList.Add(_signiflow.CreateSignerListItem(new SignerDto()
            {   // Advisor
                Signature = Convert.ToBase64String(advisor.Signature),
                FirstName = advisor.FirstName,
                LastName  = advisor.LastName,
                Email     = advisor.Email,
                IdNo      = advisor.IdNumber,
                Mobile    = advisor.MobileNumber,
                XField    = 160,
                YField    = 470,
                Page      = 7
            }));

            return(signerList);
        }