Files
raven/server/AyaNova/biz/BizObject.cs
2020-04-09 14:50:54 +00:00

92 lines
2.3 KiB
C#

using System.Collections.Generic;
using System.Collections.Immutable;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AyaNova.Biz;
namespace AyaNova.Biz
{
/// <summary>
/// Business object base class
/// </summary>
internal abstract class BizObject : IBizObject
{
public BizObject()
{
}
#region common props
internal AyaType BizType { get; set; }
internal AyaNova.Models.AyContext ct { get; set; }
internal long UserId { get; set; }
internal long UserTranslationId { get; set; }
internal AuthorizationRoles CurrentUserRoles { get; set; }
#endregion
#region Error handling
private readonly List<ValidationError> _errors = new List<ValidationError>();
public List<ValidationError> Errors => _errors;
public bool HasErrors => _errors.Any();
public void AddvalidationError(ValidationError validationError)
{
_errors.Add(validationError);
}
public bool PropertyHasErrors(string propertyName)
{
if (_errors.Count == 0) return false;
var v = _errors.FirstOrDefault(m => m.Target == propertyName);
return (v != null);
}
public void AddError(ApiErrorCode errorCode, string propertyName = null, string errorMessage = null)
{
_errors.Add(new ValidationError() { Code = errorCode, Message = errorMessage, Target = propertyName });
}
public string GetErrorsAsString()
{
if (!HasErrors) return string.Empty;
StringBuilder sb = new StringBuilder();
sb.AppendLine("Validation errors:");
foreach (ValidationError e in _errors)
{
var msg = e.Message;
if (string.IsNullOrWhiteSpace(msg))
{
//msg = e.ErrorType.ToString();
msg=ApiErrorCodeStockMessage.GetMessage(e.Code);
}
sb.AppendLine($"Target: {e.Target} error: {msg}");
}
return sb.ToString();
}
#endregion error handling
}//eoc
}//eons