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; } } }
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); }
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(); }