Example #1
0
 public static ProjectSummaryResponse Create(
     Project project,
     Scoring scoring,
     ScoringApplication scoringApplication,
     DateTimeOffset now)
 {
     return(new ProjectSummaryResponse
     {
         Id = project.Id,
         ExternalId = project.ExternalId.ToString(),
         Name = project.Name,
         ImageUrl = project.ImageUrl,
         CountryCode = project.Country.Code,
         StageId = (int)project.Stage,
         Category = project.Category,
         IcoDate = project.IcoDate,
         Website = project.Website,
         WhitePaperLink = project.WhitePaperLink,
         Facebook = project.Facebook,
         Telegram = project.Telegram,
         Twitter = project.Twitter,
         IsApplicationSubmitted = scoringApplication?.IsSubmitted ?? false,
         Scoring = ScoringResponse.FromScoring(scoring, now),
         AuthorId = project.AuthorId,
         AuthorAddress = project.Author.Address,
         IsPrivate = project.IsPrivate,
         ScoringStartTransactionStatus = scoringApplication?.GetTransactionStatus() ?? ScoringStartTransactionStatus.NotSubmitted,
         ScoringStartTransactionHash = scoringApplication?.ScoringStartTransaction?.Hash
     });
 }
 private void SetAnswersFromApplication(ScoringApplication application)
 {
     foreach (var answer in application.Answers)
     {
         var question = Partitions.SelectMany(x => x.Questions).FirstOrDefault(x => x.Id == answer.QuestionId);
         if (question != null)
         {
             question.Answer = answer.Value;
         }
     }
 }
Example #3
0
 public static ProjectResponse Create(Project project, ScoringApplication scoringApplication)
 {
     return(new ProjectResponse
     {
         Id = project.Id,
         Name = project.Name,
         Country = project.Country?.Code,
         Category = project.Category,
         Description = project.Description,
         ImageUrl = project.ImageUrl,
         IsApplicationSubmitted = scoringApplication?.IsSubmitted ?? false,
         ScoringStartTransactionStatus = scoringApplication?.GetTransactionStatus() ?? ScoringStartTransactionStatus.NotSubmitted,
         ScoringStartTransactionHash = scoringApplication?.ScoringStartTransaction?.Hash,
         Scoring = project.Scoring == null ? null : ProjectScoringResponse.Create(project.Scoring)
     });
 }
 public void Add(ScoringApplication scoringApplication)
 => _editContext.ScoringApplications.Add(scoringApplication);
        public static ScoringApplicationResponse InitializeFromApplication(IEnumerable <ScoringApplicationQuestion> questions, ScoringApplication application)
        {
            var partitions  = CreatePartitions(questions);
            var projectInfo = ProjectApplicationInfoResponse.CreateFrom(application);
            var blank       = new ScoringApplicationResponse
            {
                ProjectInfo = projectInfo,
                Partitions  = partitions,
                Created     = application.Created,
                Saved       = application.Saved
            };

            blank.SetAnswersFromApplication(application);
            blank.IsSubmitted = application.IsSubmitted;
            return(blank);
        }
Example #6
0
        public async Task SaveAsync(long projectId, SaveScoringApplicationRequest saveScoringApplicationRequest)
        {
            var project = await _projectRepository.GetByIdAsync(projectId);

            if (project == null)
            {
                throw new AppErrorException(ErrorCode.ProjectNotFound);
            }

            var scoringApplication = await _scoringApplicationRepository.GetByProjectIdAsync(projectId);

            if (scoringApplication == null)
            {
                scoringApplication = ScoringApplication.Create(_clock.UtcNow);
                _scoringApplicationRepository.Add(scoringApplication);
            }

            if (!string.IsNullOrEmpty(saveScoringApplicationRequest.CountryCode))
            {
                var country = await _countryRepository.GetByCodeAsync(saveScoringApplicationRequest.CountryCode);

                if (country == null)
                {
                    throw new AppErrorException(ErrorCode.CountryNotFound);
                }

                scoringApplication.CountryId = country.Id;
            }
            else
            {
                scoringApplication.CountryId = null;
            }

            scoringApplication.ProjectId          = project.Id;
            scoringApplication.ProjectName        = saveScoringApplicationRequest.ProjectName;
            scoringApplication.Category           = saveScoringApplicationRequest.ProjectCategory;
            scoringApplication.Stage              = saveScoringApplicationRequest.ProjectStage;
            scoringApplication.ProjectDescription = saveScoringApplicationRequest.ProjectDescription;
            scoringApplication.Site           = saveScoringApplicationRequest.Site;
            scoringApplication.WhitePaper     = saveScoringApplicationRequest.WhitePaper;
            scoringApplication.IcoDate        = saveScoringApplicationRequest.IcoDate;
            scoringApplication.ContactEmail   = saveScoringApplicationRequest.ContactEmail;
            scoringApplication.SocialNetworks = SocialNetworkRequest.ToDomain(saveScoringApplicationRequest.SocialNetworks);
            scoringApplication.Articles       = saveScoringApplicationRequest.Articles;
            scoringApplication.IsSubmitted    = false;

            scoringApplication.Saved = _clock.UtcNow;

            var newTeamMembers = saveScoringApplicationRequest.TeamMembers.Select(x => new ScoringApplicationTeamMember
            {
                FullName              = x.FullName,
                ProjectRole           = x.ProjectRole,
                About                 = x.About,
                FacebookLink          = x.FacebookLink,
                LinkedInLink          = x.LinkedInLink,
                AdditionalInformation = x.AdditionalInformation
            }).ToList();

            scoringApplication.UpdateTeamMembers(newTeamMembers);

            var newAdvisers = saveScoringApplicationRequest.Advisers.Select(x => new ScoringApplicationAdviser
            {
                FullName     = x.FullName,
                About        = x.About,
                Reason       = x.Reason,
                FacebookLink = x.FacebookLink,
                LinkedInLink = x.LinkedInLink
            }).ToList();

            scoringApplication.UpdateAdvisers(newAdvisers);

            var scoringApplicationAnswers = saveScoringApplicationRequest.Answers.Select(ScoringApplicationAnswerRequest.ToDomain).ToList();

            scoringApplication.UpdateAnswers(scoringApplicationAnswers);

            await _scoringApplicationRepository.SaveChangesAsync();
        }