예제 #1
0
 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);
 }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }