예제 #1
0
파일: NewKeeper.cs 프로젝트: mgladilov/Cas
        public void DeleteGeneric <T, TOut>(T value, bool isDeletedOnly = false, bool saveAttachedFile = true) where T : BaseEntityObject, new() where TOut : BaseEntity, new()
        {
            if (_casEnvironment.IdentityUser.UserType == UsetType.ReadOnly || _casEnvironment.IdentityUser.UserType == UsetType.SaveOnly)
            {
                return;
            }

            if (!typeof(TOut).IsSubclassOf(typeof(BaseEntity)))
            {
                throw new ArgumentException("T", "не является наследником " + typeof(BaseEntity).Name);
            }

            if (!typeof(T).IsSubclassOf(typeof(BaseEntityObject)))
            {
                throw new ArgumentException("TOut", "не является наследником " + typeof(BaseEntityObject).Name);
            }

            var method = GetMethod(typeof(T), "Convert");

            if (isDeletedOnly)
            {
                value.IsDeleted = true;
                _apiProvider.Save(InvokeConverter <T, TOut>(value, method));
            }
            else
            {
                _apiProvider.Delete(InvokeConverter <T, TOut>(value, method));
            }

            if (value is IFileContainer && saveAttachedFile)
            {
                DeleteAttachedFile(value as IFileContainer);
            }

            if (value is IFileDTOContainer && saveAttachedFile)
            {
                DeleteAttachedFileDTO(value as IFileDTOContainer);
            }
        }