Repo_Exception.cs
    
    
    
    
    
        Home
            /
FileServer                    /
Model                    /
Entities                    /
Base                    /
                    Repo_Exception.cs
    
    
            
            using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Model.Entities.Files;
namespace Model.Entities.Base
{
    public class Repo_Exception<T>
        : Exception where T
        : BaseEntity
    {
        public BaseRepository<T> repository { private set; get; }
        public FS_Item elem { private set; get; }
        public Repo_Exception(BaseRepository<T> repository, string msg, Exception ex = null)
            : base(msg, ex)
        {
            this.repository = repository;
        }
        public Repo_Exception(BaseRepository<T> repository, FS_Item elem, string msg, Exception ex = null)
            : base(msg, ex)
        {
            this.repository = repository;
            this.elem = elem;
        }
        #region        
        public static Repo_Exception<T> Factory(BaseRepository<T> repository, FS_Item elem, Repo_Exceptions type)
        {
            return new Repo_Exception<T>(repository, elem, type.ToString());
        }
    }
    public enum Repo_Exceptions
    {
        Name_already_exists_in_parents,
        Name_is_null_or_empty,
        Parent_is_null,
        Elem_items_not_empty,
        Name_cant_change,
        File_not_found,
        Size_not_equils,
        FSRepo_TypeException
    }
    #endregion
    public static class Exception_Extension
    {
        public static string FullMessage(this Exception ex)
        {
            StringBuilder res = new StringBuilder(ex.Message);
            var e = ex.InnerException;
            while (e != null)
            {
                res.Append("|" + e.Message);
                e = e.InnerException;
            }
            return res.ToString();
        }
    }
}