Example #1
0
        public bool SignCoachIntegration(string coachId, PdfIntegrationCoach values)
        {
            var filePath = Path.Combine(_env.ContentRootPath, $"PDF/integration_coach_fillable.pdf");
            var savePath = Path.Combine(_env.ContentRootPath, $"wwwroot/pdf/coachs/{coachId}.pdf");

            //var filePath = "/PDF/integration_coach_fillable.pdf";
            //var savePath = "/PDF/saved/toSave.pdf";

            PdfDocument pdf          = new PdfDocument(new PdfReader(filePath), new PdfWriter(savePath));
            PdfAcroForm form         = PdfAcroForm.GetAcroForm(pdf, false);
            PdfFont     documentFont = PdfFontFactory.CreateFont(StandardFonts.HELVETICA);

            var fields = form.GetFormFields();

            foreach (PdfFormField field in fields.Values)
            {
                field.SetFontSize(10);
                field.SetFont(documentFont);
            }

            fields["last_name"].SetValue(values.LastName);
            fields["first_name"].SetValue(values.FirstName);
            fields["birthdate"].SetValue(string.Format("{0:dd/MM/yyyy}", values.Birthdate));
            fields["birthplace"].SetValue(values.BirthPlace);
            fields["email"].SetValue(values.Email);
            fields["phone"].SetValue(values.Phone);
            fields["linkedin"].SetValue(values.LinkedIn ?? "");
            fields["discord"].SetValue(values.DiscordTag ?? "");
            fields["situation"].SetValue(values.Situation);
            fields["address"].SetValue(values.Address);
            fields["postal_code"].SetValue(values.PostalCode.ToString());
            fields["city"].SetValue(values.City);
            fields["keywords"].SetValue(values.Keywords ?? "Inconnue");
            fields["experiences"].SetValue(values.Experience ?? "Inconnue");
            fields["ideal_builder"].SetValue(values.IdealBuilder ?? "Inconnue");
            fields["s_full_name"].SetValue($"{values.FirstName} {values.LastName}");
            fields["s_birthdate"].SetValue(string.Format("{0:dd/MM/yyyy}", values.Birthdate));
            fields["s_birthplace"].SetValue(values.BirthPlace);
            fields["s_address"].SetValue($"{values.Address}, {values.PostalCode} {values.City}");
            fields["s_sign_place"].SetValue(values.City);
            fields["s_sign_date"].SetValue(string.Format("{0:dd/MM/yyyy}", DateTime.Now));

            PdfAcroForm.GetAcroForm(pdf, false).FlattenFields();

            pdf.Close();

            return(true);
        }
Example #2
0
        // Signging the PDF for the integration
        public async Task <bool> SignFicheIntegrationAsync(string currentUserId, string coachId)
        {
            Coach coach = await GetCoachFromCoachId(coachId);

            if (coach == null || coach.UserId != currentUserId)
            {
                throw new UnauthorizedAccessException("You are not the user corresponding to the coach");
            }

            User user = await(await _users.FindAsync(databaseUser =>
                                                     databaseUser.Id == coach.UserId
                                                     )).FirstOrDefaultAsync();

            if (user == null)
            {
                throw new Exception("The user doesn't exist...");
            }

            PdfIntegrationCoach pdfIntegrationCoach = new PdfIntegrationCoach()
            {
                FirstName  = user.FirstName,
                LastName   = user.LastName,
                Birthdate  = user.Birthdate,
                BirthPlace = user.BirthPlace,

                Email      = user.Email,
                Phone      = user.Phone,
                DiscordTag = user.DiscordTag,
                LinkedIn   = user.LinkedIn,

                City       = user.City,
                PostalCode = user.PostalCode,
                Address    = user.Address,

                Situation = coach.Situation,

                Keywords     = await _formsService.GetAnswerForQuestionAsync(currentUserId, "Quels sont les mots clés qui te définissent ?"),
                Experience   = await _formsService.GetAnswerForQuestionAsync(currentUserId, "Quelles sont tes expériences professionnelles et personnelles ? "),
                IdealBuilder = await _formsService.GetAnswerForQuestionAsync(currentUserId, "Quel serait le Builder idéal pour toi ?"),
                Objectifs    = await _formsService.GetAnswerForQuestionAsync(currentUserId, "Quels objectifs souhaites-tu que ton Builder atteignent au bout des 3 mois ?"),
            };

            if (_pdfService.SignCoachIntegration(coachId, pdfIntegrationCoach))
            {
                var update = Builders <Coach> .Update
                             .Set(dbCoach => dbCoach.HasSignedFicheIntegration, true);

                var coachCard = _pdfService.GenerateCoachCard(coachId, new PdfCoachCard()
                {
                    FirstName    = user.FirstName,
                    LastName     = user.LastName,
                    Birthdate    = user.Birthdate,
                    ValidityDate = coach.CandidatingDate.AddYears(1)
                });

                var fileId = await _filesService.UploadFile($"coachcard_{coachId}", coachCard);

                update = update.Set(dbCoach => dbCoach.CoachCardId, fileId);

                await _coachs.UpdateOneAsync(databaseCoach =>
                                             databaseCoach.Id == coachId,
                                             update
                                             );

                await _notificationService.NotifySignedIntegrationPaperCoach(coachId, user.Email, user.FirstName);

                return(true);
            }

            return(false);
        }