public void Delete(ProductionOrderMaterialsPackage entity, User user)
        {
            CheckPossibilityToDelete(entity, user);

            foreach (var doc in entity.Documents)
            {
                doc.DeletionDate = DateTime.Now;

                //Удаляем файл из ФС
                var fileInfo = new FileInfo(ProductionOrderMaterialsPackageStoragePath + doc.Path);
                if (fileInfo.Exists)
                {
                    try
                    {
                        fileInfo.Delete();
                    }
                    catch
                    {
                        throw new Exception("Невозможно удалить пакет материалов, так как некоторые из его файлов используются в настоящий момент.");
                    }
                }
            }
            var dirInfo = new DirectoryInfo(ProductionOrderMaterialsPackageStoragePath + entity.Id.ToString());

            if (dirInfo.Exists)
            {
                dirInfo.Delete();
            }
            productionOrderMaterialsPackageRepository.Delete(entity);
        }
 private void CheckPermissionToPerformOperation(ProductionOrderMaterialsPackage package, User user, Permission permission)
 {
     if (!IsPermissionToPerformOperation(package, user, permission))
     {
         throw new Exception(String.Format("Недостаточно прав для выполнения операции «{0}».", permission.GetDisplayName()));
     }
 }
        private bool IsPermissionToPerformOperation(ProductionOrderMaterialsPackage package, User user, Permission permission)
        {
            bool result = false;

            switch (user.GetPermissionDistributionType(permission))
            {
            case PermissionDistributionType.None:
                result = false;
                break;

            case PermissionDistributionType.Personal:
                result = package.ProductionOrder.Curator == user && user.Teams.SelectMany(x => x.ProductionOrders.SelectMany(y => y.MaterialsPackages)).Contains(package);
                break;

            case PermissionDistributionType.Teams:
                result = user.Teams.SelectMany(x => x.ProductionOrders.SelectMany(y => y.MaterialsPackages)).Contains(package);
                break;

            case PermissionDistributionType.All:
                result = true;
                break;
            }

            return(result);
        }
        public void CheckPossibilityToEdit(ProductionOrderMaterialsPackage package, User user)
        {
            // права
            CheckPermissionToPerformOperation(package, user, Permission.ProductionOrderMaterialsPackage_Create_Edit);

            // сущность
            //package.CheckPossibilityToDelete();
        }
        public bool IsPossibilityToEdit(ProductionOrderMaterialsPackage package, User user)
        {
            try
            {
                CheckPossibilityToEdit(package, user);

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Пример #6
0
 public void Delete(ProductionOrderMaterialsPackage entity)
 {
     CurrentSession.SaveOrUpdate(entity);
 }
 public void Save(ProductionOrderMaterialsPackage entity)
 {
     productionOrderMaterialsPackageRepository.Save(entity);
 }