public ServiceResult PaylasilanaEkle(DosyaYukleme yuklenecekDosya, int klasorId) { ServiceResult result = new ServiceResult(); using (var transaction = db.Database.BeginTransaction()) { try { foreach (var item in yuklenecekDosya.Files) { var filename = Path.GetFileName(item.FileName); var icindebulundugumklasorunid = klasorId; var icindeoldugumklasorunpathi = db.Paylasilanlar.Where(x => x.DosyaId == klasorId).Select(x => x.PaylasilaninYolu).Single(); var path = icindeoldugumklasorunpathi + @"\" + filename; var isPathExist = db.Dosya.Any(x => x.DosyaYolu == path && x.Durumu != true); if (isPathExist == true) { result.Code = 0; result.Data = "Aynı dosyadan var. Farklı bir dosya deneyiniz."; return(result); } else { if (item.Length < 0) { result.Code = 1; result.Data = "Oluşturulamadı"; return(result); } Paylasilanlar paylas = db.Paylasilanlar.SingleOrDefault(x => x.DosyaId == klasorId); var paylasilankisi = paylas.PaylasilanKisi; var kimpaylasti = paylas.KimPaylasti; var yetkiid = paylas.Yetki; var paylasilaninyolu = paylas.PaylasilaninYolu; var parentid = paylas.PaylasilanlarinParentId; var icindeoldugumklasorunpathi1 = db.Dosya.Where(x => x.DosyaId == klasorId && x.DosyaMi == null).Select(x => x.DosyaYolu).Single(); var path1 = icindeoldugumklasorunpathi1 + @"\" + filename; DosyaTB_Ekle(path1, Convert.ToInt32(item.Length), Path.GetExtension(filename), filename, klasorId, (int)kimpaylasti, true); var dosyaid = db.Dosya.Where(x => x.DosyaYolu == path1).Select(x => x.DosyaId).Single(); PaylasilanlarTB_Ekle(dosyaid, filename, (int)paylasilankisi, (int)kimpaylasti, (int)yetkiid, path, klasorId, true); item.CopyTo(new FileStream(path, FileMode.Create)); item.CopyTo(new FileStream(path1, FileMode.Create)); } transaction.Commit(); result.Code = 2; result.Data = "Islem Basarili"; return(result); } } catch (Exception) { result.Code = 3; result.Data = "Bir hata meydana geldi. Lütfen yükleme yapmayı tekrar deneyiniz."; transaction.Rollback(); return(result); } return(result); } }
public void PaylasilanlarTB_Ekle(int DosyaId, string Adi, int PaylasilanKisi, int KimPaylasti, int Yetki, string PaylasilaninYolu, int?PaylasilanlarinParentId, bool DosyaMi) { Paylasilanlar paylas = new Paylasilanlar { DosyaId = DosyaId, Adi = Adi, PaylasilanKisi = PaylasilanKisi, KimPaylasti = KimPaylasti, PaylasilmaTarihi = DateTime.Now, Yetki = Yetki, PaylasilaninYolu = PaylasilaninYolu, PaylasilanlarinParentId = PaylasilanlarinParentId, DosyaMi = DosyaMi }; db.Paylasilanlar.Add(paylas); db.SaveChanges(); }
public ServiceResult IcShare(string DosyaId, string KullaniciId, string Checked, string session) { ServiceResult result = new ServiceResult(); if (String.IsNullOrWhiteSpace(DosyaId)) { result.Code = 0; result.Message = "Bir dosya secimi yapılmadı!!! Lutfen paylasmak istediginiz dosyayi seciniz.."; return(result); } if (String.IsNullOrWhiteSpace(KullaniciId)) { result.Code = 0; result.Message = "Kullanıcı secimi yapılmadı!!! Lutfen bir kullanici seciniz.."; return(result); } if (String.IsNullOrWhiteSpace(Checked)) { result.Code = 0; result.Message = "Yetki Secimi Yapılmadı!!! Lutfen bir yetki secimi yapiniz.."; return(result); } string[] parcalar = ExtensionMethod.Parcala(DosyaId); List <int> dosyaIds = Array.ConvertAll(parcalar, int.Parse).ToList(); List <Dosya> dosya = db.Dosya.Where(x => dosyaIds.Any(v => v == x.DosyaId && x.DosyaMi == true && x.Durumu == null)).ToList(); List <Dosya> klasor = db.Dosya.Where(x => dosyaIds.Any(v => v == x.DosyaId) && x.DosyaMi == null && x.Durumu == null).ToList(); // klasorleri bul int[] KullaniciIdArray = KullaniciId.Split(',').Select(int.Parse).ToArray(); var list = new List <int>(KullaniciIdArray); int[] yetkiIdArray = Checked.Split(',').Select(int.Parse).ToArray(); var yetkiliste = new List <int>(yetkiIdArray); var yetki = (yetkiliste.Count == 1) ? Convert.ToInt32(Checked) : 3; for (int i = 0; i < dosya.Count; i++) { var dosyaid = dosya[i].DosyaId; var dosyayolu = dosya[i].DosyaYolu; var dosyaismi = dosya[i].DosyaAdi; var dosyaparent = dosya[i].ParentId; List <Kullanici> kullanici = db.Kullanici.Where(x => list.Any(v => v == x.KullaniciId)).ToList(); Paylasilanlar paylas = new Paylasilanlar(); for (int m = 0; m < kullanici.Count; m++) { var kullaniciid = kullanici[m].KullaniciId; var pathtemp = Path.Combine(hostingEnvironment.WebRootPath, "Dosyalarım", kullaniciid.ToString()); var path = Path.Combine(pathtemp, "Paylasilanlar", kullaniciid.ToString(), dosyaismi); var targetpath = Path.Combine(pathtemp, "Paylasilanlar", kullaniciid.ToString()); var ispathexist = db.Paylasilanlar.Any(x => x.PaylasilaninYolu == path); if (ispathexist != true) { var sonuc = (dosya[0].ParentId != null) ? null : dosyaparent; var sessionkisi = Convert.ToInt32(session); PaylasilanlarTB_Ekle(dosyaid, dosyaismi, kullaniciid, sessionkisi, yetki, path, sonuc, true); result.Code = 1; result.Message = "Başarılı"; if (!System.IO.Directory.Exists(targetpath)) { System.IO.Directory.CreateDirectory(targetpath); } System.IO.File.Copy(dosyayolu, path, true); } } } for (int i = 0; i < klasor.Count; i++) { var klasorid = klasor[i].DosyaId; var klasorismi = klasor[i].DosyaAdi; var klasoryolu = klasor[i].DosyaYolu; var klasorparentcheck = klasor[i].ParentId; List <Kullanici> kullanici = db.Kullanici.Where(x => list.Any(v => v == x.KullaniciId)).ToList(); for (int m = 0; m < kullanici.Count; m++) { var kullaniciid = kullanici[m].KullaniciId; var pathtemp = Path.Combine(hostingEnvironment.WebRootPath, "Dosyalarım", kullaniciid.ToString()); var path = Path.Combine(pathtemp, "Paylasilanlar", kullaniciid.ToString(), klasorismi); var targetpath = Path.Combine(pathtemp, "Paylasilanlar", kullaniciid.ToString()); var altklasorler = db.Dosya.Where(x => x.DosyaYolu.Contains(klasoryolu) && x.DosyaMi == null && x.Durumu == null).Select(x => x).ToList(); var altdosyalar = db.Dosya.Where(x => x.DosyaYolu.Contains(klasoryolu) && x.DosyaMi == true && x.Durumu == null).Select(x => x).ToList(); for (int x = 0; x < altklasorler.Count; x++) { var parentid = altklasorler[x].ParentId; var klasorunparentpathi = db.Dosya.Where(d => d.DosyaId == parentid).Select(d => d.DosyaYolu).SingleOrDefault(); var parentpath = klasorunparentpathi.ToString(); var remove = parentpath.Remove(0, 64); var paylasmayolu = targetpath + @"\" + remove + @"\" + altklasorler[x].DosyaAdi; var ispathexist = db.Paylasilanlar.Any(k => k.PaylasilaninYolu == paylasmayolu); if (ispathexist != true) { var sonuc = (x == 0) ? null : parentid; var sessionkisi = Convert.ToInt32(session); PaylasilanlarTB_Ekle(altklasorler[x].DosyaId, altklasorler[x].DosyaAdi, kullaniciid, sessionkisi, yetki, paylasmayolu, sonuc, null); result.Code = 1; result.Message = "Başarılı"; } } if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } for (int x = 0; x < altdosyalar.Count; x++) { var dosyayolu = altdosyalar[x].DosyaYolu; var altdosyaparent = altdosyalar[x].ParentId; var dosyanınparentpathi = db.Dosya.Where(s => s.DosyaId == altdosyaparent && s.DosyaMi == null && s.Durumu == null).Select(s => s.DosyaYolu).SingleOrDefault(); var remove = dosyanınparentpathi.Remove(0, 64); var pathchecking = targetpath + @"\" + remove + @"\" + altdosyalar[x].DosyaAdi; var ispathexist = db.Paylasilanlar.Any(k => k.PaylasilaninYolu == pathchecking); if (ispathexist != true) { var sessionkullaniciId = Convert.ToInt32(session); PaylasilanlarTB_Ekle(altdosyalar[x].DosyaId, altdosyalar[x].DosyaAdi, kullaniciid, sessionkullaniciId, yetki, pathchecking, altdosyalar[x].ParentId, true); result.Code = 1; result.Message = "Başarılı"; } } foreach (string dirPath in Directory.GetDirectories(klasoryolu, "*", SearchOption.AllDirectories)) { Directory.CreateDirectory(dirPath.Replace(klasoryolu, path)); } foreach (string newPath in Directory.GetFiles(klasoryolu, "*.*", SearchOption.AllDirectories)) { System.IO.File.Copy(newPath, newPath.Replace(klasoryolu, path), true); } } } return(result); }