/// <summary> /// Aceasta metoda permite cautarea fisierelor ce contin anumite propietati /// primite in forma de lista de id-uri. /// </summary> /// <param name="propertyIndices">Lista cu id-urile propietatilor.</param> /// <returns>Lista cu obiecte de tip fisier dupa filtrare.</returns> public static List <File> FileSearch(List <int> propertyIndices) { List <File> returnList = new List <File>(); using (ModelBDContainer1 context = new ModelBDContainer1()) { var files = context.Files; foreach (var file in files) { int matchingPropertyCount = 0; foreach (var propertyIndex in propertyIndices) { Property property = context.Properties.Find(propertyIndex); if (context.PropertyLists.Where(x => x.FileId == file.Id && x.PropertyId == property.Id).Count() == 0) { break; } matchingPropertyCount++; } if (matchingPropertyCount == propertyIndices.Count()) { returnList.Add(file); } } } return(returnList); }
/// <summary> /// Aceasta metoda anuleaza stergerea fisierelor. /// Flag-ul "ToDelete" va deveni fals pentru toate fisierele. /// </summary> /// <returns>Un boolean care spune daca adaugarea a fost realizata cu succes.</returns> private static bool CancelDeletion() { using (ModelBDContainer1 context = new ModelBDContainer1()) { var files = context.Files.Where(x => x.ToDelete == true); foreach (var file in files) { file.ToDelete = false; } context.SaveChanges(); } return(true); }
/// <summary> /// Aceasta metoda permite adaugarea unei propietati in baza de date. /// </summary> /// <param name="description">Descrierea propietatii.</param> /// <returns>Un boolean care spune daca adaugarea a fost realizata cu succes.</returns> public static bool AddProperty(string description) { using (ModelBDContainer1 context = new ModelBDContainer1()) { Property property = new Property() { Description = description }; context.Properties.Add(property); context.SaveChanges(); } return(true); }
/// <summary> /// Aceasta metoda permite obtinerea tuturor propietatilor din baza de date. /// </summary> /// <returns>Lista cu obiecte de tip propietate ce reprezinta /// toate propietatile din baza de date.</returns> public static List <Property> GetAllProperties() { List <Property> toReturn = new List <Property>(); using (ModelBDContainer1 context = new ModelBDContainer1()) { var properties = context.Properties; foreach (var auxProperty in properties) { toReturn.Add(auxProperty); } } return(toReturn); }
/// <summary> /// Metoda aceasta permite obtinerea tuturor propietatilor unui fisier. /// </summary> /// <param name="fileIndex">Id-ul fisierului.</param> /// <returns>Lista cu propietati pe care le are fisierul primit.</returns> public static List <Property> GetFileProperties(int fileIndex) { List <Property> toReturn = new List <Property>(); using (ModelBDContainer1 context = new ModelBDContainer1()) { File file = context.Files.Find(fileIndex); var propertyLists = context.PropertyLists.Where(x => x.FileId == file.Id); foreach (var propertyList in propertyLists) { toReturn.Add(context.Properties.Where(x => x.Id == propertyList.PropertyId).FirstOrDefault()); } return(toReturn); } }
/// <summary> /// Aceasta metoda permite modificarea unui fisier si propietatile lui. /// </summary> /// <param name="file">Fisierul primit ca obiect. Campurile care nu sunt /// goale vor inlocui pe cele din baza de date.</param> /// <param name="propertyIndices">Lista cu id-urile propietatilor. Initial, /// toate propietatile vor fi sterse din fisier ca apoi sa fie inlocuite de acestea.</param> /// <returns>Un boolean care spune daca adaugarea a fost realizata cu succes.</returns> public static bool ModifyFile(File file, List <int> propertyIndices) { using (ModelBDContainer1 context = new ModelBDContainer1()) { var dbFile = context.Files.Find(file.Id); if (dbFile != null) { if (file.Description.Length != 0) { dbFile.Description = file.Description; } if (file.Name.Length != 0) { dbFile.Name = file.Name; } if (file.Path.Length != 0) { dbFile.Path = file.Path; } var presentProperties = GetFileProperties(dbFile.Id); var propertyList = context.PropertyLists.Where(x => x.FileId == file.Id); foreach (var _propertyList in propertyList) { context.PropertyLists.Remove(_propertyList); } foreach (var propertyIndex in propertyIndices) { var property = context.Properties.Find(propertyIndex); PropertyList newPropertyList = new PropertyList() { FileId = file.Id, PropertyId = property.Id }; context.PropertyLists.Add(newPropertyList); } context.SaveChanges(); } else { return(false); } } return(true); }
/// <summary> /// Aceasta metoda realizeaza stergerea fisierelor marcate. /// </summary> /// <returns>Un boolean care spune daca adaugarea a fost realizata cu succes.</returns> private static bool AcceptDeletion() { using (ModelBDContainer1 context = new ModelBDContainer1()) { var files = context.Files.Where(x => x.ToDelete == true); foreach (var file in files) { var propertyLists = context.PropertyLists.Where(x => x.FileId == file.Id); foreach (var propertyList in propertyLists) { context.PropertyLists.Remove(propertyList); } context.Files.Remove(file); } context.SaveChanges(); } return(true); }
/// <summary> /// Aceasta metoda adauga un fisier primit in baza de date. /// De asemenea, creeaza legaturi cu propietatile primite ca id-uri. /// </summary> /// <param name="file">Obiectul de tip fisier.</param> /// <param name="propertyIndices">O lista cu id-urile propietatilor pentru fisier.</param> /// <returns>Un boolean care spune daca adaugarea a fost realizata cu succes.</returns> public static bool AddFile(File file, List <int> propertyIndices) { using (ModelBDContainer1 context = new ModelBDContainer1()) { context.Files.Add(file); foreach (var propertyIndex in propertyIndices) { Property property = context.Properties.Find(propertyIndex); PropertyList auxPropertyList = new PropertyList() { FileId = file.Id, PropertyId = property.Id }; context.PropertyLists.Add(auxPropertyList); } context.SaveChanges(); return(true); } }
/// <summary> /// Aceasta metoda marcheaza fisierele primite ca id pentru a fi sterse /// atunci cand butonul "Confirm Delete" este apasat de catre utilizator. /// </summary> /// <param name="fileIndices">Lista cu id-urile fisierelor ce vor fi marcate.</param> /// <returns>Un boolean care spune daca adaugarea a fost realizata cu succes.</returns> public static bool MarkForDeletion(List <int> fileIndices) { using (ModelBDContainer1 context = new ModelBDContainer1()) { foreach (var fileIndex in fileIndices) { File file = context.Files.Find(fileIndex); var auxFile = context.Files.Find(file.Id); if (auxFile == null) { return(false); } auxFile.ToDelete = true; } context.SaveChanges(); return(true); } }
/// <summary> /// Aceasta metoda permite stergerea de propietati. /// </summary> /// <param name="propertyIndices">Lista cu id-uri pentru propietatile ce doresc a fi sterse.</param> /// <returns>Un boolean care spune daca adaugarea a fost realizata cu succes.</returns> public static bool DeleteProperties(List <int> propertyIndices) { using (ModelBDContainer1 context = new ModelBDContainer1()) { foreach (var propertyIndex in propertyIndices) { Property property = context.Properties.Find(propertyIndex); var propertyLists = context.PropertyLists.Where(x => x.PropertyId == property.Id); foreach (var propertyList in propertyLists) { context.PropertyLists.Remove(propertyList); } context.Properties.Remove(property); } context.SaveChanges(); } return(true); }