using System; using System.Diagnostics.Contracts; namespace RealTimeDotnetCoreSamples.Models { public class ResultHandler { public bool Success { get; private set; } public bool IsFinished { get; private set; } public E_ErrorType ErrorType { get; private set; } public Exception Exception { get; private set; } public string Message { get; private set; } public ResultHandler(bool success, E_ErrorType errorType, string customErrorMessage) { Contract.Requires(success); this.Success = success; this.ErrorType = errorType; this.Message = customErrorMessage; } public ResultHandler(Exception error) { Contract.Requires(error != null); this.Success = false; this.Exception = error; this.ErrorType = E_ErrorType.Exception; } public static ResultHandler Fail(E_ErrorType errorType) { return new ResultHandler(default, false, errorType, errorType.ToString()); } public static ResultHandler Fail(E_ErrorType errorType, string customErrorMessage) { return new ResultHandler(default, false, errorType, customErrorMessage); } public static ResultHandler Fail(Exception exception) { return new ResultHandler(exception); } public static ResultHandler Ok(T value) { if (value == null) return new ResultHandler(value, false, E_ErrorType.DataNotFound, null); else return new ResultHandler(value, true, E_ErrorType.Undefined, null); } public static ResultHandler Finish(T value) { return new ResultHandler(value, true, E_ErrorType.Undefined, null); } } public class ResultHandler : ResultHandler { private T _value; public T Value { get { Contract.Requires(Success); return _value; } private set { _value = value; } } public ResultHandler(T value, bool success, E_ErrorType ErrorType, string message) : base(success, ErrorType, message) { Contract.Requires(value != null || !success); this.Value = value; } public ResultHandler(Exception exception) : base(exception) { } } public enum E_ErrorType { Undefined = 0, Unknown = 1, BadRequest = 2, DataNotFound = 3, Exception = 4, Supplier = 6, EntityNotValid = 7 } }