Esempio n. 1
0
        // Signging the PDF for the integration
        public async Task <bool> SignFicheIntegrationAsync(string currentUserId, string builderId)
        {
            Builder builder = await GetBuilderFromBuilderId(builderId);

            if (builder == null)
            {
                throw new Exception("The builder doesn't exist");
            }
            if (builder.UserId != currentUserId)
            {
                throw new UnauthorizedAccessException("You are not the builder you want to sign for");
            }

            User user = await GetUserFromId(builder.UserId);

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

            Project project = await _projectsService.GetProjectAsync(builderId);

            if (project == null)
            {
                throw new Exception("The builder doesn't have project...");
            }

            PdfIntegrationBuilder pdfIntegrationBuilder = new PdfIntegrationBuilder()
            {
                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 = builder.Situation,

                Expectation = await _formsService.GetAnswerForQuestionAsync(currentUserId, "Pourquoi souhaites-tu intégrer le programme Build Up ?"),

                ProjectDomaine     = project.Categorie,
                ProjectName        = project.Name,
                ProjectLaunchDate  = project.LaunchDate,
                ProjectDescription = project.Description,
                ProjectTeam        = project.Team
            };

            if (_pdfService.SignBuilderIntegration(builderId, pdfIntegrationBuilder))
            {
                var update = Builders <Builder> .Update
                             .Set(dbBuilder => dbBuilder.HasSignedFicheIntegration, true);

                var builderCard = _pdfService.GenerateBuilderCard(builderId, new PdfBuilderCard()
                {
                    FirstName    = user.FirstName,
                    LastName     = user.LastName,
                    Birthdate    = user.Birthdate,
                    ValidityDate = builder.CandidatingDate.AddMonths(3)
                });

                var fileId = await _filesService.UploadFile($"buildercard_{builderId}", builderCard);

                update = update.Set(dbBuilder => dbBuilder.BuilderCardId, fileId);

                await _builders.UpdateOneAsync(databaseBuilder =>
                                               databaseBuilder.Id == builderId,
                                               update
                                               );

                await _notificationService.NotifySignedIntegrationPaperBuilder(builderId, user.Email, user.FirstName);

                return(true);
            }

            return(false);
        }