Esempio n. 1
0
        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);
        }