public GroupSurveyResultsViewModel(Survey survey) { if (survey == null) return; if (survey.GroupId.HasValue) GroupId = survey.GroupId.Value; Bulletins = survey.Bulletins.Select(x => new GroupSurveyResults_BulletinViewModel(x, survey.HasOpenProtocol)).OrderBy(x => x.Name).ToList(); }
public GroupCreateEditSurveyViewModel(Survey survey) { if (survey != null) { if (survey.GroupId.HasValue) { GroupId = survey.GroupId.Value; GroupName = survey.Group.Name; GroupUrl = survey.Group.Url; IsContentModeration = survey.Group.PrivacyEnum.HasFlag(GroupPrivacy.ContentModeration); } SurveyId = survey.Id; Title = survey.Title; Text = survey.Text; IsPrivate = survey.IsPrivate; IsDraft = survey.State == (byte)ContentState.Draft; TagTitles = TagsHelper.ConvertTagListToString(survey.Tags); Duration = survey.Duration; VariantsCount = survey.VariantsCount; Options = survey.Options.Select(x => new GroupSurveyOptionViewModel(x)).OrderBy(x => x.Position).ToList(); } }
public static Survey UpdateSurvey(Survey survey, SurveyData data, Guid? userId) { return _votingService.UpdateSurvey(survey, data, userId); }
private void FixupSurvey(Survey previousValue) { if (previousValue != null && previousValue.Options.Contains(this)) { previousValue.Options.Remove(this); } if (Survey != null) { if (!Survey.Options.Contains(this)) { Survey.Options.Add(this); } if (SurveyId != Survey.Id) { SurveyId = Survey.Id; } } }
public Survey UpdateSurvey(Survey survey, SurveyData data, Guid? userId) { if (survey.State != (byte)ContentState.Draft && survey.State != (byte)ContentState.Premoderated) throw new BusinessLogicException("Данный опрос нельзя изменять"); if (userId.HasValue) { if (survey.AuthorId != userId) throw new BusinessLogicException("Вы не являетесь автором опроса"); GroupService.UserInGroup(userId.Value, survey.Group, true); } if (data.VariantsCount >= data.Options.Count) throw new BusinessLogicException("Разрешено выбирать слишком много вариантов"); survey.Title = data.Title; survey.Text = data.Text; survey.IsPrivate = data.IsPrivate; survey.Duration = data.Duration; survey.VariantsCount = data.VariantsCount; survey.Tags.Clear(); foreach (var tag in TagsHelper.ConvertStringToTagList(data.Tags, survey.GroupId)) survey.Tags.Add(tag); var optionsForDelete = survey.Options.ToList(); foreach (var option in optionsForDelete) DataService.PerThread.OptionSet.DeleteObject(option); var options = new List<Option>(); byte optPos = 0; foreach (var o in data.Options) { var option = new Option { Position = optPos, Title = o.Title, Description = o.Description, SurveyId = survey.Id }; DataService.PerThread.OptionSet.AddObject(option); options.Add(option); optPos++; } survey.Options.Clear(); foreach (var option in options) survey.Options.Add(option); DataService.PerThread.SaveChanges(); return survey; }
public Survey CreateSurvey(SurveyData data, Guid? userId) { var group = DataService.PerThread.GroupSet.SingleOrDefault(x => x.Id == data.GroupId); if (group == null) throw new BusinessLogicException("Указан неверный идентификатор группы"); if (userId.HasValue) GroupService.UserInGroup(userId.Value, group, true); if (data.VariantsCount >= data.Options.Count) throw new BusinessLogicException("Разрешено выбирать слишком много вариантов"); var survey = new Survey { AuthorId = userId, Title = data.Title, Text = data.Text, IsPrivate = data.IsPrivate, Tags = TagsHelper.ConvertStringToTagList(data.Tags, data.GroupId), GroupId = data.GroupId, Duration = data.Duration, VariantsCount = data.VariantsCount, CreationDate = DateTime.Now, State = data.IsDraft ? (byte)ContentState.Draft : (byte)ContentState.Premoderated, HasOpenProtocol = data.HasOpenProtocol }; var options = new List<Option>(); byte optPos = 0; foreach (var o in data.Options) { var option = new Option { Position = optPos, Title = o.Title, Description = o.Description, SurveyId = survey.Id }; options.Add(option); optPos++; } survey.Options = options; DataService.PerThread.ContentSet.AddObject(survey); DataService.PerThread.SaveChanges(); return survey; }
private static Survey SurveyVote(Survey survey, ICollection<Option> options, Guid userId) { if (survey.IsFinished) throw new BusinessLogicException("Опрос уже завершен"); if (survey.IsPrivate) GroupService.UserInGroup(userId, survey.Group, true); var bulletin = survey.Bulletins.SingleOrDefault(x => x.UserId == userId); if (bulletin != null) throw new BusinessLogicException("Вы уже голосовали"); bulletin = new SurveyBulletin { UserId = userId, SurveyId = survey.Id, Result = options }; DataService.PerThread.SurveyBulletinSet.AddObject(bulletin); DataService.PerThread.SaveChanges(); return survey; }
public Group_SurveyViewModel(Survey survey, Guid? userId) { if (survey != null) { Id = survey.Id; Title = survey.Title; Text = survey.Text; IsPrivate = survey.IsPrivate; IsFinished = survey.IsFinished; State = (ContentState)survey.State; HasOpenProtocol = survey.HasOpenProtocol; GroupId = survey.GroupId; Options = survey.Options.Select(x => new GroupSurveyOptionViewModel(x)).OrderBy(x => x.Position).ToList(); if (survey.PublishDate.HasValue) { StartDate = survey.PublishDate.Value; if (survey.Duration.HasValue) { EndDate = survey.PublishDate.Value.AddDays(survey.Duration.Value); if (!survey.IsFinished) { var ts = EndDate.Value - DateTime.Now; TimeRemaining = string.Format("{0} дней {1:00}:{2:00}:{3:00}", (int)ts.TotalDays, ts.Hours, ts.Minutes, ts.Seconds); } } } var bulletins = survey.Bulletins; var voted = bulletins.Count(x => x.Result.Count != 0); var votedString = DeclinationService.OfNumber(voted, "человек", "человека", "человек"); if (votedString[votedString.Length - 1] == 'а') VotedUsers = "Проголосовали "; else VotedUsers = "Проголосовало "; VotedUsers += votedString; var abstained = bulletins.Count - voted; var abstainedString = DeclinationService.OfNumber(abstained, "человек", "человека", "человек"); if (abstainedString[abstainedString.Length - 1] == 'а') AbstainedUsers = "Воздержались "; else AbstainedUsers = "Воздержалось "; AbstainedUsers += abstainedString; VotesCount = 0; foreach (var bulletin in bulletins) VotesCount += bulletin.Result.Count; VariantsCount = survey.VariantsCount; VariantsCountString = "Вы можете выбрать " + DeclinationService.OfNumber(VariantsCount, "вариант", "варианта", "вариантов"); if (userId.HasValue) { var blt = survey.Bulletins.SingleOrDefault(x => x.UserId == userId); if (blt != null) { IsUserVoted = true; UserBulletinId = blt.Id; foreach (var o in blt.Result) Options.Single(x => x.Id == o.Id).IsChecked = true; } } } }
public static Survey UpdateSurvey(Survey survey, SurveyData data, Guid?userId) { return(_votingService.UpdateSurvey(survey, data, userId)); }