|
using System;
using System.Collections.ObjectModel;
using System.ComponentModel.DataAnnotations;
using System.ServiceModel.DomainServices.Client.ApplicationServices;
namespace IssueVision.Data.Web
{
/// <summary>
/// Issue class client-side extensions
/// </summary>
public partial class Issue
{
/// <summary>
/// Try validate for the Issue class
/// </summary>
/// <returns></returns>
public bool TryValidateObject()
{
var context = new ValidationContext(this, null, null);
var validationResults = new Collection<ValidationResult>();
if (Validator.TryValidateObject(this, context, validationResults, false) == false)
{
foreach (ValidationResult error in validationResults)
{
ValidationErrors.Add(error);
}
return false;
}
return true;
}
/// <summary>
/// Try validate the specified property for Issue class
/// </summary>
/// <param name="propertyName"></param>
/// <returns></returns>
public bool TryValidateProperty(string propertyName)
{
if (string.IsNullOrEmpty(propertyName))
{
throw new ArgumentNullException("propertyName");
}
if (propertyName == "IssueID" || propertyName == "Title")
{
var context = new ValidationContext(this, null, null) { MemberName = propertyName };
var validationResults = new Collection<ValidationResult>();
if (propertyName == "IssueID")
return Validator.TryValidateProperty(IssueID, context, validationResults);
if (propertyName == "Title")
return Validator.TryValidateProperty(Title, context, validationResults);
}
return false;
}
/// <summary>
/// Business logic:
/// Admin user can read/update any issue, and
/// normal user can only read/update issues assigned to them
/// or issues created by them and have not assigned to anyone.
/// </summary>
/// <returns></returns>
public bool IsIssueReadOnly()
{
string userName = WebContextBase.Current.Authentication.User.Identity.Name;
// Admin user can read/update any issue
if (WebContextBase.Current.Authentication.User.IsInRole(IssueVisionServiceConstant.UserTypeAdmin))
return false;
// normal user can only read/update issues assigned to them
// or issues created by them and have not assigned to anyone.
if (AssignedToID != null && AssignedToID == userName)
return false;
if (AssignedToID == null && OpenedByID == userName)
return false;
return true;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Weidong has been an information system professional since 1990. He has a Master's degree in Computer Science, and is currently a MCSD .NET