public ActionResult GetFormCopiaAnnuncio(string token) { using (DatabaseContext db = new DatabaseContext()) { int idUtente = (Session["utente"] as PersonaModel).Persona.ID; string tokenDecodificato = Server.UrlDecode(token); //string tokenPulito = tokenDecodificato.Substring(3).Substring(0, tokenDecodificato.Length - 6); //Guid tokenGuid = Guid.Parse(tokenPulito); Guid tokenGuid = Guid.Parse(tokenDecodificato); ANNUNCIO annuncio = db.ANNUNCIO.SingleOrDefault(m => m.TOKEN == tokenGuid && m.ID_PERSONA != idUtente); if (annuncio != null) { PubblicaCopiaViewModel copia = null; if (annuncio.ID_OGGETTO != null) { copia = new PubblicaOggettoCopiaViewModel(annuncio); return(PartialView("PartialPages/_CopiaOggetto", copia)); } else { copia = new PubblicaServizioCopiaViewModel(annuncio); return(PartialView("PartialPages/_CopiaServizio", copia)); } } } throw new Exception(ExceptionMessage.OpenCopyForm); }
private PubblicazioneViewModel UpdateOggetto(ANNUNCIO model, PubblicaOggettoCopiaViewModel viewModelCopia) { PubblicazioneViewModel viewModel = null; if (model.ID_CATEGORIA == 12) { viewModel = new PubblicaTelefoniSmartphoneViewModel(model); } else if (model.ID_CATEGORIA == 64) { viewModel = new PubblicaConsoleViewModel(model); } else if (model.ID_CATEGORIA == 13 || (model.ID_CATEGORIA >= 62 && model.ID_CATEGORIA <= 63) || model.ID_CATEGORIA == 65) { viewModel = new PubblicaTecnologiaViewModel(model); } else if (model.ID_CATEGORIA == 14) { viewModel = new PubblicaPcViewModel(model); } else if (model.ID_CATEGORIA == 26) { viewModel = new PubblicaElettrodomesticoViewModel(model); } else if ((model.ID_CATEGORIA >= 28 && model.ID_CATEGORIA <= 39) || model.ID_CATEGORIA == 41) { viewModel = new PubblicaMusicaViewModel(model); } else if (model.ID_CATEGORIA == 40) { viewModel = new PubblicaStrumentoViewModel(model); } else if (model.ID_CATEGORIA == 45) { viewModel = new PubblicaVideogamesViewModel(model); } else if (model.ID_CATEGORIA >= 42 && model.ID_CATEGORIA <= 47) { viewModel = new PubblicaGiocoViewModel(model); } else if (model.ID_CATEGORIA >= 50 && model.ID_CATEGORIA <= 61) { viewModel = new PubblicaSportViewModel(model); } else if (model.ID_CATEGORIA >= 67 && model.ID_CATEGORIA <= 80) { viewModel = new PubblicaVideoViewModel(model); } else if (model.ID_CATEGORIA >= 81 && model.ID_CATEGORIA <= 85) { viewModel = new PubblicaLibroViewModel(model); } else if (model.ID_CATEGORIA >= 89 && model.ID_CATEGORIA <= 93) { viewModel = new PubblicaVeicoloViewModel(model); } else if (model.ID_CATEGORIA >= 127 && model.ID_CATEGORIA <= 170 && model.ID_CATEGORIA != 161 && model.ID_CATEGORIA != 152 && model.ID_CATEGORIA != 141 && model.ID_CATEGORIA != 127) { viewModel = new PubblicaVestitoViewModel(model); } else { viewModel = new PubblicaOggettoViewModel(model); } // se è stato copiato l'annuncio, allora riporto le modifiche if (viewModel != null) { viewModel.Update(viewModelCopia); } return(viewModel); }
public string CopiaOggetto(PubblicaOggettoCopiaViewModel viewModel) { if (ModelState.IsValid) { using (DatabaseContext db = new DatabaseContext()) { using (DbContextTransaction transaction = db.Database.BeginTransaction()) { try { PERSONA persona = (Session["utente"] as PersonaModel).Persona; Guid token = Guid.Parse(viewModel.TokenOK); ANNUNCIO annuncio = db.ANNUNCIO.SingleOrDefault(m => m.TOKEN == token && m.ID_PERSONA != persona.ID); if (annuncio != null) { // controllo se ha già quell'annuncio ANNUNCIO annuncioInPossesso = db.ANNUNCIO.FirstOrDefault(m => m.ID_PERSONA == persona.ID && (m.STATO == (int)StatoVendita.ATTIVO || m.STATO == (int)StatoVendita.INATTIVO) && (m.ID == annuncio.ID || m.ID_ORIGINE == annuncio.ID)); if (annuncioInPossesso == null) { ANNUNCIO_DESIDERATO annuncioDesiderato = db.ANNUNCIO_DESIDERATO.Where(m => m.ANNUNCIO.TOKEN == token && m.ID_PERSONA == persona.ID).SingleOrDefault(); if (annuncioDesiderato != null) { db.ANNUNCIO_DESIDERATO.Remove(annuncioDesiderato); db.SaveChanges(); } // copiare e salvare annuncio PubblicazioneViewModel viewModelAnnuncio = UpdateOggetto(annuncio, viewModel); // copia foto List <string> fotoEsistenti = annuncio.ANNUNCIO_FOTO .Where(m => viewModelAnnuncio.Foto.Contains(m.ALLEGATO.NOME) == true) .Select(m => m.ALLEGATO.NOME).ToList(); for (int i = 0; i < fotoEsistenti.Count; i++) { string path = "~/Uploads/Images/"; if (annuncio.ATTIVITA != null) { path += annuncio.ATTIVITA.TOKEN; } else { path += annuncio.PERSONA.TOKEN; } string nomeFileOriginale = Server.MapPath(path + "/" + annuncio.DATA_INSERIMENTO.Year + "/Original/" + fotoEsistenti[i]); HttpFile fileOriginale = new HttpFile(nomeFileOriginale); FileUploadifive fileSalvatato = UploadImmagine("/Temp/Images/" + Session.SessionID + "/" + viewModel.TokenUploadFoto, fileOriginale); if (fileSalvatato != null) { string[] array = viewModelAnnuncio.Foto.ToArray(); int indiceArray = Array.IndexOf(array, fileSalvatato.NomeOriginale); viewModelAnnuncio.Foto[indiceArray] = fileSalvatato.Nome; } } viewModelAnnuncio.DbContext = db; annuncioInPossesso = new ANNUNCIO(); if (viewModelAnnuncio.SalvaAnnuncio(ControllerContext, annuncioInPossesso)) { int?idAnnuncio = annuncioInPossesso.ID; if (idAnnuncio != null) { // ASSEGNAZIONE CREDITI PersonaModel utente = ((PersonaModel)Session["utente"]); viewModelAnnuncio.InviaEmail(ControllerContext, annuncio, utente); decimal numeroCreditiBonus = AddBonus(db, utente, viewModelAnnuncio); TempData["BONUS"] = string.Format(Bonus.YouWin, numeroCreditiBonus, Language.Moneta); annuncioInPossesso.PERSONA = persona; // perchè sennò non riesce a recuperare l'associazione AnnuncioViewModel nuovoAnnuncio = new AnnuncioViewModel(db, annuncioInPossesso); transaction.Commit(); return(RenderRazorViewToString("PartialPages/_Possiedo", nuovoAnnuncio)); } } } } } catch (Exception eccezione) { transaction.Rollback(); //ErrorSignal.FromCurrentContext().Raise(eccezione); LoggatoreModel.Errore(eccezione); } } } } // desiderio non registrato throw new Exception(ExceptionMessage.CopyAdvertising); }