document template on import user flag rules

This commit is contained in:
Gary Sharp
2023-04-15 18:12:50 +10:00
parent 1e24844e88
commit d75663a219
25 changed files with 2568 additions and 660 deletions
@@ -14,10 +14,11 @@ using Disco.Services.Web;
using Disco.Web.Areas.API.Models.DocumentTemplate;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Net;
using System.Web;
using System.Web.Mvc;
using System.Web.UI.WebControls;
@@ -1209,6 +1210,68 @@ namespace Disco.Web.Areas.API.Controllers
}
}
[HttpPost, ValidateAntiForgeryToken]
[DiscoAuthorizeAll(Claims.Config.DocumentTemplate.Configure, Claims.Config.UserFlag.Configure)]
public virtual ActionResult RemoveOnImportUserFlagRule([Required] string id, Guid? ruleId = null)
{
try
{
var template = Database.DocumentTemplates.FirstOrDefault(t => t.Id == id);
if (template == null)
throw new ArgumentException("Unknown document template", nameof(id));
template.RemoveOnImportUserFlagRule(Database, ruleId.Value);
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
catch (Exception ex)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, ex.Message);
}
}
public virtual ActionResult AddOnImportUserFlagRule([Required] string id, bool? addFlag = null, int? userFlagId = null, string comments = null)
{
try
{
var template = Database.DocumentTemplates.FirstOrDefault(t => t.Id == id);
if (template == null)
throw new ArgumentException("Unknown document template", nameof(id));
var rule = new OnImportUserFlagRule()
{
AddFlag = addFlag.Value,
FlagId = userFlagId.Value,
UserId = Authorization.User.UserId,
Comments = comments,
};
rule = template.AddOnImportUserFlagRule(Database, rule);
var model = new AddOnImportUserFlagRuleModel()
{
Id = rule.Id,
FlagId = rule.FlagId,
UserId = rule.UserId,
AddFlag = rule.AddFlag,
Comments = rule.Comments,
UserDisplayName = rule.User.DisplayName,
UserIdFriendly = rule.User.FriendlyId(),
UserFlagName = rule.UserFlag.Name,
UserFlagIcon = rule.UserFlag.Icon,
UserFlagColour = rule.UserFlag.IconColour,
};
return Json(model);
}
catch (Exception ex)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, ex.Message);
}
}
#endregion
#region Handlers
@@ -0,0 +1,20 @@
using System;
namespace Disco.Web.Areas.API.Models.DocumentTemplate
{
public class AddOnImportUserFlagRuleModel
{
public Guid Id { get; set; }
public int FlagId { get; set; }
public string UserId { get; set; }
public bool AddFlag { get; set; }
public string Comments { get; set; }
public string UserDisplayName { get; set; }
public string UserIdFriendly { get; set; }
public string UserFlagIcon { get; set; }
public string UserFlagColour { get; set; }
public string UserFlagName { get; set; }
}
}