public DevIssue CreateNewIssue(Citizen citizen, CreateIssueArgs args) { var issue = new DevIssue() { Content = args.Content, Day = GameHelper.CurrentDay, Name = args.Name, VisibilityOptionID = (int)VisibilityOptionEnum.Author, Time = DateTime.Now, CreatedByID = citizen.ID }; foreach (var file in args.UploadedFiles) { if (file == null) { continue; } var extension = Path.GetExtension(file.FileName).Replace(".", ""); var newFilename = GenerateFilenameForNewUpload(extension); var path = GetPathToUploadedFile(newFilename); Directory.CreateDirectory(Path.GetDirectoryName(path)); file.SaveAs(path); issue.DevIssueUploadedFiles.Add(new DevIssueUploadedFile() { Filename = newFilename, OriginalFilename = file.FileName }); } devIssueRepository.Add(issue); devIssueRepository.SaveChanges(); return(issue); }
public void Unvote(DevIssue issue, Citizen citizen) { var vote = issue.DevIssueVotes.First(v => v.CitizenID == citizen.ID); devIssueRepository.RemoveSpecific(vote); devIssueRepository.SaveChanges(); }
public void SetLabels(DevIssue issue, params DevIssueLabelTypeEnum[] labelTypes) { var labels = devIssueRepository.GetLabels(labelTypes); issue.DevIssueLabelTypes.Clear(); issue.DevIssueLabelTypes = labels; ConditionalSaveChanges(devIssueRepository); }
public static MvcHtmlString Create(DevIssue issue, string @class = null) { return(LinkCreator.Create( name: issue.Name, action: "ViewIssue", controller: "DevIssue", routeValues: new { issueID = issue.ID })); }
public MethodResult CanRemoveIssue(DevIssue issue, Citizen citizen) { if (citizen.HaveRightsOfAtLeast(PlayerTypeEnum.Admin) == false) { return(new MethodResult("You cannot do that!")); } return(MethodResult.Success); }
public DevIssueViewModel(DevIssue issue) { ID = issue.ID; Name = issue.Name; Content = issue.Content; PlayerType = SessionHelper.LoggedCitizen.GetPlayerType(); Day = issue.Day; Time = issue.Time.ToShortTimeString(); Avatar = new SmallEntityAvatarViewModel(issue.Citizen.Entity); Avatar.Classname = "avatar"; Files = issue.DevIssueUploadedFiles.ToList() .Select(f => new DevIssueUploadedFileViewModel(f)).ToList(); var actualLabels = issue.DevIssueLabelTypes.ToList(); foreach (var label in Enum.GetValues(typeof(DevIssueLabelTypeEnum)).Cast <DevIssueLabelTypeEnum>()) { var item = new SelectListItem() { Text = label.ToString(), Value = ((int)label).ToString(), Selected = actualLabels.Any(l => l.ID == (int)label) }; LabelTypes.Add(item); } foreach (var visibility in Enum.GetValues(typeof(VisibilityOptionEnum)).Cast <VisibilityOptionEnum>()) { var item = new SelectListItem() { Text = visibility.ToString(), Value = ((int)visibility).ToString(), Selected = issue.VisibilityOptionID == (int)visibility }; VisiblityOptions.Add(item); } foreach (var label in actualLabels) { labelIDs.Add(label.ID); Labels.Add(new DevIssueLabelViewModel(label)); } Score = ScoreHelper.ToString(issue.DevIssueVotes.Sum(v => v.Score)); CanVote = issue.DevIssueVotes.Any(v => v.CitizenID == SessionHelper.LoggedCitizen.ID) == false; CanUnvote = !CanVote; loadComments(issue); }
public void Vote(DevIssue issue, Citizen citizen, int score) { issue.DevIssueVotes.Add(new DevIssueVote() { CitizenID = citizen.ID, DevIssueID = issue.ID, Score = score }); devIssueRepository.SaveChanges(); }
public MethodResult CanUnvote(DevIssue issue, Citizen citizen) { var result = CanSeeIssue(issue, citizen); if (result.IsError) { return(result); } if (issue.DevIssueVotes.Any(v => v.CitizenID == citizen.ID) == false) { return(new MethodResult("You did not voted!")); } return(MethodResult.Success); }
public void RemoveIssue(DevIssue issue) { var files = issue.DevIssueUploadedFiles.ToList(); foreach (var file in files) { var path = GetPathToUploadedFile(file); if (File.Exists(path)) { File.Delete(path); } devIssueRepository.RemoveSpecific(file); } devIssueRepository.Remove(issue); ConditionalSaveChanges(devIssueRepository); }
public MethodResult CanSeeIssue(DevIssue issue, Citizen citizen) { if (issue == null) { return(new MethodResult("Issue does not exist!")); } if (citizen.HaveRightsOfAtLeast(issue.GetVisibilityOption().GetMinimumPlayerTypeToView()) == false) { return(new MethodResult("You cannot do that!")); } if (citizen.GetPlayerType() == PlayerTypeEnum.Player && issue.GetVisibilityOption() == VisibilityOptionEnum.Author && citizen.ID != issue.CreatedByID) { return(new MethodResult("You cannot do that!")); } return(MethodResult.Success); }
public MethodResult CanVote(DevIssue issue, Citizen citizen, int score) { var result = CanSeeIssue(issue, citizen); if (result.IsError) { return(result); } if (citizen.GetPlayerType() == PlayerTypeEnum.Player && score != 1) { return(new MethodResult("You cannot do that!")); } if (issue.DevIssueVotes.Any(v => v.CitizenID == citizen.ID)) { return(new MethodResult("You already voted!")); } return(MethodResult.Success); }
public void WriteComment(DevIssue issue, Citizen citizen, string content, VisibilityOptionEnum visibility) { var comment = new DevIssueComment() { CitizenID = citizen.ID, Day = GameHelper.CurrentDay, Time = DateTime.Now, VisibilityOptionID = (int)visibility, DevIssueID = issue.ID, Content = content }; var entityLink = EntityLinkCreator.Create(citizen.Entity); var issueLink = DevIssueLinkCreator.Create(issue); var msg = $"{entityLink} commented your issue - {issueLink}"; warningService.AddWarning(issue.CreatedByID, msg); devIssueCommentRepository.Add(comment); devIssueCommentRepository.SaveChanges(); }
private void loadComments(DevIssue issue) { VisibilityOptionEnum playerVisiblity = VisibilityOptionEnum.Everyone; var citizen = SessionHelper.LoggedCitizen; if (citizen.ID == issue.CreatedByID) { playerVisiblity = VisibilityOptionEnum.Author; } if (citizen.GetPlayerType() == PlayerTypeEnum.Moderator) { playerVisiblity = VisibilityOptionEnum.Moderators; } if (citizen.GetPlayerType() >= PlayerTypeEnum.Admin) { playerVisiblity = VisibilityOptionEnum.Admins; } Comments = issue.DevIssueComments.Where(c => c.VisibilityOptionID <= (int)playerVisiblity).ToList() .Select(c => new DevIssueCommentViewModel(c)).ToList(); }
public static VisibilityOptionEnum GetVisibilityOption(this DevIssue issue) { return((VisibilityOptionEnum)issue.VisibilityOptionID); }
public MethodResult CanWriteComment(DevIssue issue, Citizen citizen) { return(CanSeeIssue(issue, citizen)); }
public void SetVisibility(DevIssue issue, VisibilityOptionEnum option) { issue.VisibilityOptionID = (int)option; ConditionalSaveChanges(devIssueRepository); }