private decimal AddBonus(DatabaseContext db, PersonaModel utente, PubblicazioneViewModel viewModel) { bool risultato = false; decimal numeroPuntiGuadagnati = 0; // verifico se dare un bonus dopo un certo numero di pubblicazioni Guid portale = Guid.Parse(ConfigurationManager.AppSettings["portaleweb"]); Guid idContoCorrente = db.ATTIVITA.SingleOrDefault(p => p.TOKEN == portale).ID_CONTO_CORRENTE; int numeroVendite = db.ANNUNCIO.Where(v => v.ID_PERSONA == utente.Persona.ID).GroupBy(v => v.ID_CATEGORIA).Count(); // aggiunge il bonus sui primi tot. annunci iniziali TRANSAZIONE bonus = db.TRANSAZIONE.Where(b => b.ID_CONTO_MITTENTE == idContoCorrente && b.ID_CONTO_DESTINATARIO == utente.Persona.ID_CONTO_CORRENTE && b.TIPO == (int)TipoTransazione.BonusPubblicazioneIniziale).FirstOrDefault(); if (numeroVendite == Convert.ToInt32(ConfigurationManager.AppSettings["numeroPubblicazioniBonus"]) && bonus == null) { decimal puntiBonusIniziali = Convert.ToInt32(ConfigurationManager.AppSettings["bonusPubblicazioniIniziali"]); this.AddBonus(db, ControllerContext, utente.Persona, portale, puntiBonusIniziali, TipoTransazione.BonusPubblicazioneIniziale, Bonus.InitialPubblication); numeroPuntiGuadagnati += (decimal)puntiBonusIniziali; risultato = risultato | true; } // aggiunge bonus se l'annuncio è completo di tutti i dati if (viewModel.IsAnnuncioCompleto()) { decimal puntiAnnuncioCompleto = Convert.ToInt32(ConfigurationManager.AppSettings["bonusAnnuncioCompleto"]); this.AddBonus(db, ControllerContext, utente.Persona, portale, puntiAnnuncioCompleto, TipoTransazione.BonusAnnuncioCompleto, Bonus.FullAnnouncement); numeroPuntiGuadagnati += puntiAnnuncioCompleto; risultato = risultato | true; } return((risultato) ? numeroPuntiGuadagnati : 0); //return ((risultato) ? (int)bonus.PUNTI : 0); }