private void SetFeedbackVenditore(ANNUNCIO model, TipoVenditore tipoVenditore) { try { List <int> voti = model.ANNUNCIO_FEEDBACK .Where(item => (tipoVenditore == TipoVenditore.Persona && item.ANNUNCIO.ID_PERSONA == Venditore.Id) || (tipoVenditore == TipoVenditore.Attivita && item.ANNUNCIO.ID_ATTIVITA == Venditore.Id)).Select(item => item.VOTO).ToList(); int votoMassimo = voti.Count * 10; if (voti.Count <= 0) { VenditoreFeedback = -1; } else { int x = voti.Sum() / votoMassimo; VenditoreFeedback = x * 100; } } catch (Exception eccezione) { Elmah.ErrorSignal.FromCurrentContext().Raise(eccezione); VenditoreFeedback = -1; } }
public bool Save(DatabaseContext db, ref string messaggio) { string tokenDecodificato = HttpContext.Current.Server.UrlDecode(this.Annuncio.Token); Guid tokenGuid = Guid.Parse(tokenDecodificato); PersonaModel utente = (PersonaModel)HttpContext.Current.Session["utente"]; decimal crediti = utente.Credito.Where(m => m.STATO == (int)StatoCredito.ASSEGNATO) .Select(m => m.PUNTI).Sum(); decimal puntiOfferta = 0; if (!string.IsNullOrWhiteSpace(this.Punti)) { puntiOfferta = this.Punti.ParseFromHappyCoin(); } bool baratto = false; if (this.BarattiToken != null && this.BarattiToken.Count > 0) { baratto = true; } ANNUNCIO annuncio = db.ANNUNCIO.SingleOrDefault(m => m.TOKEN == tokenGuid && m.ID_PERSONA != utente.Persona.ID && m.STATO == (int)StatoVendita.ATTIVO && puntiOfferta <= crediti && utente.Persona.STATO == (int)Stato.ATTIVO && ((m.OGGETTO != null && 1 <= m.OGGETTO.NUMERO_PEZZI) || (m.SERVIZIO != null)) && (baratto || puntiOfferta > 0)); if (annuncio != null) { // verifica se offerta già effettuata if (annuncio.OFFERTA.Count(o => o.ID_PERSONA == utente.Persona.ID && o.STATO != (int)StatoOfferta.ANNULLATA) > 0) { messaggio = App_GlobalResources.ErrorResource.BidInProgress; return(false); } // inserimento offerta OFFERTA offerta = new OFFERTA(); offerta.ID_ANNUNCIO = annuncio.ID; offerta.ID_PERSONA = utente.Persona.ID; offerta.PUNTI = puntiOfferta; //offerta.SOLDI = decimal.Parse(this.Soldi, System.Globalization.NumberStyles.Currency); offerta.SOLDI = Utility.cambioValuta(offerta.PUNTI); offerta.TIPO_OFFERTA = (int)this.TipoOfferta; offerta.TIPO_TRATTATIVA = (int)this.TipoPagamento; // DA VERIFICARE CHE COSA SERVA offerta.DATA_INSERIMENTO = DateTime.Now; offerta.STATO = (int)StatoOfferta.ATTIVA; db.OFFERTA.Add(offerta); if (db.SaveChanges() > 0) { // Sospensione crediti associati all'offerta if (offerta.PUNTI > 0) { ContoCorrenteCreditoModel credito = new ContoCorrenteCreditoModel(db, utente.Persona.ID_CONTO_CORRENTE); credito.Suspend(offerta.ID, (decimal)offerta.PUNTI); } decimal soldiSpedizione = 0; if (baratto) { // se sto offrendo un baratto, inserisco gli oggetti barattati foreach (string annuncioDiScambio in this.BarattiToken) { OFFERTA_BARATTO offertaBaratto = new OFFERTA_BARATTO(); offertaBaratto.ID_OFFERTA = offerta.ID; var annuncioBaratto = db.ANNUNCIO.SingleOrDefault(m => m.TOKEN.ToString() == annuncioDiScambio && m.STATO == (int)StatoVendita.ATTIVO); offertaBaratto.ID_ANNUNCIO = annuncioBaratto.ID; offertaBaratto.DATA_INSERIMENTO = DateTime.Now; offertaBaratto.STATO = (int)Stato.ATTIVO; db.OFFERTA_BARATTO.Add(offertaBaratto); if (db.SaveChanges() <= 0) { return(false); } if (this.TipoScambio == TipoScambio.Spedizione) { var annuncioBarattoSpedizione = annuncioBaratto.ANNUNCIO_TIPO_SCAMBIO .FirstOrDefault(m => m.TIPO_SCAMBIO == (int)TipoScambio.Spedizione); soldiSpedizione += db.ANNUNCIO_TIPO_SCAMBIO_SPEDIZIONE .SingleOrDefault(m => m.ID_ANNUNCIO_TIPO_SCAMBIO == annuncioBarattoSpedizione.ID).SOLDI; } } } // aggiungere offerta_spedizione per salvare dati destinazione if (this.TipoScambio == TipoScambio.Spedizione) { OFFERTA_SPEDIZIONE offertaSpedizione = new OFFERTA_SPEDIZIONE(); offertaSpedizione.ID_OFFERTA = offerta.ID; INDIRIZZO indirizzo = db.INDIRIZZO.FirstOrDefault(m => m.INDIRIZZO1 == this.IndirizzoDestinatario && m.COMUNE.CAP == this.CapDestinatario && m.CIVICO == this.CivicoDestinatario); if (indirizzo == null) { indirizzo = new INDIRIZZO(); indirizzo.INDIRIZZO1 = this.IndirizzoDestinatario; indirizzo.CIVICO = this.CivicoDestinatario; indirizzo.ID_COMUNE = db.COMUNE.FirstOrDefault(m => m.CAP == this.CapDestinatario).ID; indirizzo.TIPOLOGIA = (int)TipoIndirizzo.Residenza; indirizzo.DATA_INSERIMENTO = DateTime.Now; indirizzo.STATO = (int)Stato.ATTIVO; db.INDIRIZZO.Add(indirizzo); db.SaveChanges(); } offertaSpedizione.SOLDI = soldiSpedizione; offertaSpedizione.ID_COMMISSIONE = GetCommissioneSpedizione(db, soldiSpedizione); offertaSpedizione.ID_INDIRIZZO_DESTINATARIO = indirizzo.ID; offertaSpedizione.NOMINATIVO_DESTINATARIO = this.NominativoDestinatario; offertaSpedizione.TELEFONO_DESTINATARIO = this.TelefonoDestinatario; TIPO_VALUTA tipoValuta = (HttpContext.Current.Application["tipoValuta"] as List <TIPO_VALUTA>).SingleOrDefault(m => m.SIMBOLO == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencySymbol); offertaSpedizione.ID_TIPO_VALUTA = tipoValuta.ID; offertaSpedizione.DATA_INSERIMENTO = DateTime.Now; offertaSpedizione.STATO = (int)Stato.ATTIVO; db.OFFERTA_SPEDIZIONE.Add(offertaSpedizione); if (db.SaveChanges() <= 0) { return(false); } } return(true); } } else { messaggio = App_GlobalResources.ErrorResource.BidAd; return(false); } return(false); }
public AnnuncioViewModel(DatabaseContext db, ANNUNCIO model) { this.SetProprietaIniziali(); Id = model.ID; if (model.ID_ATTIVITA != null) { Venditore = new UtenteVenditaViewModel(model.ATTIVITA, model.PERSONA); SetFeedbackVenditore(model, TipoVenditore.Attivita); } else { Venditore = new UtenteVenditaViewModel(model.PERSONA); SetFeedbackVenditore(model, TipoVenditore.Persona); } Token = model.TOKEN.ToString(); Nome = model.NOME; TipoPagamento = (TipoPagamento)model.TIPO_PAGAMENTO; if (model.ID_SERVIZIO != null) { TipoAcquisto = TipoAcquisto.Servizio; } //Punti = model.PUNTI.ToHappyCoin(); Punti = model.PUNTI.ToString(); Soldi = Convert.ToDecimal(model.SOLDI).ToString("C"); DataInserimento = (DateTime)model.DATA_INSERIMENTO; CategoriaID = model.ID_CATEGORIA; Categoria = model.CATEGORIA.NOME; //TipoSpedizione = (Spedizione)model.TIPO_SPEDIZIONE; int venditaId = model.ID; Foto = model.ANNUNCIO_FOTO.Select(f => new AnnuncioFoto() { ID_ANNUNCIO = f.ID_ANNUNCIO, ALLEGATO = f.ALLEGATO, DATA_INSERIMENTO = f.DATA_INSERIMENTO, DATA_MODIFICA = f.DATA_MODIFICA }).ToList(); StatoVendita = (StatoVendita)model.STATO; Notificato = (model.ANNUNCIO_NOTIFICA.Count > 0) ? true : false; var listaInteressati = model.ANNUNCIO_DESIDERATO.Where(f => f.ID_ANNUNCIO == model.ID); NumeroInteressati = listaInteressati.Count(); PersonaModel utente = (HttpContext.Current.Session["utente"] as PersonaModel); if (utente != null) { int idUtente = utente.Persona.ID; Desidero = listaInteressati.FirstOrDefault(m => m.ID_PERSONA == idUtente) != null; // controllo se l'utente ha già proposto lo stesso annuncio int? idAnnuncioOriginale = model.ID_ORIGINE; ANNUNCIO copiaAnnuncio = db.ANNUNCIO.SingleOrDefault(m => m.ID_PERSONA == idUtente && (m.STATO == (int)StatoVendita.ATTIVO || m.STATO == (int)StatoVendita.INATTIVO) && ((m.ID_ORIGINE == idAnnuncioOriginale && idAnnuncioOriginale != null) || m.ID_ORIGINE == model.ID)); if (copiaAnnuncio != null) { TokenAnnuncioCopiato = Utility.RandomString(3) + copiaAnnuncio.TOKEN + Utility.RandomString(3); } } CondivisioneFacebookG4G = (StatoPubblicaAnnuncioFacebook?)model.CONDIVISIONE_FACEBOOK_G4G; CondivisioneFacebookUtente = (StatoPubblicaAnnuncioFacebook?)model.CONDIVISIONE_FACEBOOK_UTENTE; DataPubblicazioneFacebook = model.DATA_PUBBLICAZIONE_FACEBOOK; }