public ActionResult Acquista(ServizioViewModel model) { if (model == null || string.IsNullOrWhiteSpace(model.Token)) { return(Redirect("/Servizi/Tutti")); } if (model.Offerta.TipoOfferta == TipoOfferta.Baratto && model.Offerta.ServiziBarattati != null && model.Offerta.ServiziBarattati.Length > 4) { ModelState.AddModelError("ErroreOfferta", ErroreOfferta.PrezzoErrato.ToString()); } if (CheckUtenteAttivo(1)) { return(RedirectToAction("Impostazioni", "Utente")); } string nomeView = "Index"; try { using (DatabaseContext db = new DatabaseContext()) { string tokenDecodificato = Server.UrlDecode(model.Token); string tokenPulito = tokenDecodificato.Substring(3).Substring(0, tokenDecodificato.Length - 6); Guid tokenGuid = Guid.Parse(tokenPulito); if (ModelState.IsValid) { ObjectParameter errore = new ObjectParameter("Errore", typeof(int)); errore.Value = 0; string baratti = ""; if (model.Offerta.TipoOfferta == TipoOfferta.Baratto) { XElement xml = new XElement("Root", model.Offerta.ServiziBarattati.Select((i, index) => new XElement("Guid", i) ) ); baratti = xml.ToString(); } int?idOfferta = db.BENE_SAVE_OFFERTA_SERVIZIO(tokenGuid, ((PersonaModel)Session["utente"]).Persona.ID_CONTO_CORRENTE, 1, (int)model.Offerta.TipoOfferta, model.Offerta.PuntiOfferti, Utils.cambioValuta(model.Offerta.PuntiOfferti), baratti, errore); if (idOfferta != null && Convert.ToInt32(errore.Value) == 0) { // impostare invio email offerta effettuata EmailModel email = new EmailModel(ControllerContext); email.To.Add(new System.Net.Mail.MailAddress(model.VenditoreToken.ToString(), App_GlobalResources.Email.BidOf + " " + model.VenditoreNominativo + " - " + System.Web.Configuration.WebConfigurationManager.AppSettings["nomeSito"])); email.Subject = App_GlobalResources.Email.BidSubject + " " + model.Nome; email.Body = "Offerta"; email.DatiEmail = model; new EmailController().SendEmail(email); return(RedirectToAction("OffertaInviata", "Servizio", new { idOfferta = idOfferta })); } // ERRORE ModelState.AddModelError("ErroreOfferta", ((ErroreOfferta)errore.Value).GetDisplayName()); } else { ModelState.AddModelError("ErroreOfferta", App_GlobalResources.Language.ErrorGenericBid); } int idUtente = (Session["utente"] as PersonaModel).Persona.ID; // recupero le informazioni sul servizio ANNUNCIO vendita = db.ANNUNCIO.Where(v => v.TOKEN == tokenGuid && v.SERVIZIO != null && v.ID_PERSONA != idUtente && (v.STATO == (int)StatoVendita.ATTIVO || v.STATO == (int)StatoVendita.BARATTOINCORSO)).FirstOrDefault(); // reindirizza alla lista generale di servizi if (vendita == null) { return(RedirectToAction("Tutti", "Servizi")); } nomeView = vendita.CATEGORIA.DESCRIZIONE; model.Id = (int)vendita.ID_SERVIZIO; model.CategoriaID = vendita.ID_CATEGORIA; model.Categoria = vendita.CATEGORIA.NOME; model.Token = Utils.RandomString(3) + vendita.TOKEN.ToString() + Utils.RandomString(3); model.Citta = vendita.OGGETTO.COMUNE.NOME; model.DataInserimento = vendita.DATA_INSERIMENTO; model.VenditoreToken = vendita.PERSONA.TOKEN; model.Foto = vendita.ANNUNCIO_FOTO.Select(f => f.FOTO.FOTO1).ToList(); model.Nome = vendita.NOME; model.Punti = vendita.PUNTI; model.Soldi = vendita.SOLDI; model.Lunedi = (bool)vendita.SERVIZIO.LUNEDI; model.Martedi = (bool)vendita.SERVIZIO.MARTEDI; model.Mercoledi = (bool)vendita.SERVIZIO.MERCOLEDI; model.Giovedi = (bool)vendita.SERVIZIO.GIOVEDI; model.Venerdi = (bool)vendita.SERVIZIO.VENERDI; model.Sabato = (bool)vendita.SERVIZIO.SABATO; model.Domenica = (bool)vendita.SERVIZIO.DOMENICA; model.Tutti = (bool)vendita.SERVIZIO.TUTTI; model.OraInizio = (TimeSpan)vendita.SERVIZIO.ORA_INIZIO_FERIALI; model.OraFine = (TimeSpan)vendita.SERVIZIO.ORA_FINE_FERIALI; model.OraInizio = (TimeSpan)vendita.SERVIZIO.ORA_INIZIO_FESTIVI; model.OraFine = (TimeSpan)vendita.SERVIZIO.ORA_FINE_FESTIVI; model.TipoPagamento = (TipoPagamento)vendita.TIPO_PAGAMENTO; model.VenditoreID = vendita.ID_PERSONA; model.VenditoreNominativo = vendita.PERSONA.NOME + ' ' + vendita.PERSONA.COGNOME; model.Tariffa = (Tariffa)vendita.SERVIZIO.TARIFFA; model.StatoVendita = (StatoVendita)vendita.STATO; model = SetServizioViewModel(db, model); SetFeedbackVenditoreServizio(db, model); } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } return(View(nomeView, model)); }