private void SetOutstandingPicture(UbicationPicture currentOutstandingPicture, List <UbicationPicture> currentPicturesList, string outstandingPicture, int id) { if (currentOutstandingPicture != null) { if (currentOutstandingPicture.Extension == outstandingPicture) { return; } else { //Si no son iguales primero cambiamos a false la opcion outstandingPicture de la foto actual, ya que esta no es mas la foto de portada currentOutstandingPicture.OutstandingPicture = false; db.Entry(currentOutstandingPicture).State = EntityState.Modified; //Luego verificamos si la nueva foto de portada existe entre las fotos antiguas //Para ello creamos una variable que nos almacenara la imagen completa si existe. UbicationPicture outstandingPictureExists = null; foreach (var currentPicture in currentPicturesList) { //comparamos if (currentPicture.Extension == outstandingPicture) { outstandingPictureExists = currentPicture; } } // si la nueva foto de portada existe solo se le cambia el valor outstandingPicture a true if (outstandingPictureExists != null) { outstandingPictureExists.OutstandingPicture = true; db.Entry(outstandingPictureExists).State = EntityState.Modified; } //si la foto no existe debemos crearla y agregarla con el valor outstandingPicture en true. else { UbicationPicture picture = new UbicationPicture(); picture.OutstandingPicture = true; picture.Extension = AddBlobToStorage(id, outstandingPicture, 20); picture.UbicationId = id; db.UbicationPictures.Add(picture); db.SaveChanges(); } } } else { UbicationPicture picture = new UbicationPicture(); picture.OutstandingPicture = true; picture.Extension = AddBlobToStorage(id, outstandingPicture, 20); picture.UbicationId = id; db.UbicationPictures.Add(picture); db.SaveChanges(); } }
public string DeletePicture(string extension) { var state = "false"; try { UbicationPicture ubicationPicture = db.UbicationPictures.FirstOrDefault(p => p.Extension == extension); if (ubicationPicture != null) { db.UbicationPictures.Remove(ubicationPicture); db.SaveChanges(); state = "true"; return(state); } else { return(state); } } catch (Exception) { return(state); } }
public ActionResult Create(Ubication ubication, string[] urls, int[] ubicationFeatures, string CantonId, string outstandingPicture) { if (ubication.Name != null && ubication.DistritId > 0 && ubicationFeatures.Length > 0) { using (var transaction = db.Database.BeginTransaction()) { try { db.Ubications.Add(ubication); db.SaveChanges(); List <UbicationPicture> Pictures = new List <UbicationPicture>(); List <UbicationFeatureUbication> Features = new List <UbicationFeatureUbication>(); UbicationPicture picture = new UbicationPicture(); if (outstandingPicture != null) { picture.OutstandingPicture = true; picture.Extension = AddBlobToStorage(ubication.UbicationId, outstandingPicture); picture.UbicationId = ubication.UbicationId; Pictures.Add(picture); } if (urls != null) { foreach (var url in urls) { picture = new UbicationPicture(); picture.OutstandingPicture = false; picture.Extension = AddBlobToStorage(ubication.UbicationId, url); picture.UbicationId = ubication.UbicationId; Pictures.Add(picture); } } foreach (var feature in ubicationFeatures) { UbicationFeatureUbication ubicationFeature = new UbicationFeatureUbication(); ubicationFeature.UbicationFeatureId = feature; ubicationFeature.UbicationId = ubication.UbicationId; Features.Add(ubicationFeature); } db.UbicationPictures.AddRange(Pictures); db.UbicationFeaturesUbication.AddRange(Features); db.SaveChanges(); transaction.Commit(); return(RedirectToAction("Index")); } catch (Exception ex) { transaction.Rollback(); ViewBag.Error = ex.Message; return(View(ubication)); } } } return(View(ubication)); }
public ActionResult Edit([Bind(Include = "UbicationId,Description,Name,DistritId,UbicationCategoryId")] Ubication ubication, string[] urls, int[] ubicationFeatures, string CantonId, string outstandingPicture) { if (ubication.Name != null && ubication.DistritId > 0 && ubicationFeatures.Length > 0) { using (var transaction = db.Database.BeginTransaction()) { try { db.Entry(ubication).State = EntityState.Modified; db.SaveChanges(); //---------------Pictures section---------------// if (urls != null) { UbicationPicture ubicationPicture = new UbicationPicture(); List <UbicationPicture> ubicationPictures = new List <UbicationPicture>(); IQueryable <UbicationPicture> currentPicturesEF = from p in db.UbicationPictures where p.UbicationId == ubication.UbicationId select p; //Tenemos la lista de fotos actuales y la foto de portada actual en formato de byte. List <UbicationPicture> currentPicturesList = currentPicturesEF.ToList(); UbicationPicture currentOutstandingPicture = currentPicturesList.Find(p => p.OutstandingPicture == true); if (outstandingPicture != null) { SetOutstandingPicture(currentOutstandingPicture, currentPicturesList, outstandingPicture, ubication.UbicationId); } var i = 0; foreach (var url in urls) { if (!currentPicturesList.Exists(x => x.Extension == url)) { ubicationPicture = new UbicationPicture(); ubicationPicture.OutstandingPicture = false; ubicationPicture.Extension = AddBlobToStorage(ubication.UbicationId, url, i); ubicationPicture.UbicationId = ubication.UbicationId; ubicationPictures.Add(ubicationPicture); } i++; } db.UbicationPictures.AddRange(ubicationPictures); db.SaveChanges(); } //---------------End pictures section---------------// //---------------Features section---------------// IQueryable <UbicationFeatureUbication> currentFeatures = from f in db.UbicationFeaturesUbication where f.UbicationId == ubication.UbicationId select f; List <UbicationFeatureUbication> currentFeaturesList = currentFeatures.ToList(); foreach (var currentFeature in currentFeaturesList) { var NoExists = true; foreach (var feature in ubicationFeatures) { if (currentFeature.UbicationFeatureId == feature) { NoExists = false; } } if (NoExists) { db.UbicationFeaturesUbication.Remove(currentFeature); } } List <UbicationFeatureUbication> ubicationFeaturesToAdd = new List <UbicationFeatureUbication>(); foreach (var feature in ubicationFeatures) { var Exists = false; foreach (var currentFeature in currentFeaturesList) { if (currentFeature.UbicationFeatureId == feature) { Exists = true; } } if (!Exists) { UbicationFeatureUbication ubicationFeatureUbication = new UbicationFeatureUbication(); ubicationFeatureUbication.UbicationFeatureId = feature; ubicationFeatureUbication.UbicationId = ubication.UbicationId; ubicationFeaturesToAdd.Add(ubicationFeatureUbication); } } db.UbicationFeaturesUbication.AddRange(ubicationFeaturesToAdd); db.SaveChanges(); transaction.Commit(); } catch (Exception ex) { throw; } } return(RedirectToAction("Index")); } reloadViewBags(urls.ToList(), ubicationFeatures.ToList(), outstandingPicture, CantonId, ubication); return(View(ubication)); }