using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Model.Entities.Base;
using Model.Entities.Files.FS_Entities;
using Model.UnitsOfWork;
namespaceModel.Entities.Files.Repo
{
publicclassRepo_SFile : Base_FS_Repository<SFile>
{
publicRepo_SFile(UOW UOW) : base(UOW, Enum_BaseDirectoryEntity.File) { }
protectedoverridevoidValidation_Create(SFile elem)
{
if (string.IsNullOrEmpty(elem.Name))
thrownew Repo_Exception<SFile>(this, elem, "elem name is null or empty");
if (elem.Parent == null)
thrownew Repo_Exception<SFile>(this, elem, "parent is null");
if (elem.Parent.ContainsName(elem))
thrownew Repo_Exception<SFile>(this, elem, "parent");
if (!File.Exists(elem.PhysicalPath))
thrownew Exception();
}
protectedoverridevoidValidation_Update(SFile old, SFile elem)
{
if (elem.Parent == null)
thrownew Exception();
//Перемещениеif (old.Parent != elem.Parent)
{
//В данной папке уже есть элемент с таким именемif (elem.Parent.ContainsName(elem))
thrownew Exception();
try
{
File.Move(old.PhysicalPath, elem.PhysicalPath);
}
catch (Exception ex)
{
throw ex;
}
}
//if (old.Name != elem.Name)//{// if (elem.Parent.ContainsName(elem))// throw new Exception();//}
}
protectedoverridevoidValidation_Delete(SFile elem)
{
File.Delete(elem.PhysicalPath);
}
public FileStream GetFile(SFile elem)
{
returnnew FileStream(elem.PhysicalPath, FileMode.Open);
}
}
}