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); } }
public void Delete(ProductionOrderMaterialsPackage entity) { CurrentSession.SaveOrUpdate(entity); }
public void Save(ProductionOrderMaterialsPackage entity) { productionOrderMaterialsPackageRepository.Save(entity); }