Beispiel #1
0
        // VERIFICARE CHE L'ASSEGNAZIONE DELLA MONETA VADA A BUON FINE E CHE QUINDI LA TRANSAZIONE
        // ABBIA EFFETTO
        public void AddBonus(DatabaseContext db, ControllerContext controller, PERSONA persona, Guid tokenPortale, decimal punti, TipoTransazione tipo, string nomeTransazione, int?idAnnuncio = null)
        {
            ATTIVITA         attivita     = db.ATTIVITA.Where(p => p.TOKEN == tokenPortale).SingleOrDefault();
            PERSONA_ATTIVITA proprietario = attivita.PERSONA_ATTIVITA.SingleOrDefault(m => m.RUOLO == (int)RuoloProfilo.Proprietario && m.STATO == (int)Stato.ATTIVO);
            PERSONA          mittente     = null;

            if (proprietario != null)
            {
                mittente = proprietario.PERSONA;
            }
            TRANSAZIONE model = new TRANSAZIONE();

            model.ID_CONTO_MITTENTE     = attivita.ID_CONTO_CORRENTE;
            model.ID_CONTO_DESTINATARIO = persona.ID_CONTO_CORRENTE;
            model.TIPO             = (int)tipo;
            model.NOME             = nomeTransazione;
            model.PUNTI            = punti;
            model.DATA_INSERIMENTO = DateTime.Now;
            model.STATO            = (int)StatoPagamento.ACCETTATO;
            db.TRANSAZIONE.Add(model);
            db.SaveChanges();

            if (idAnnuncio != null)
            {
                TRANSAZIONE_ANNUNCIO transazioneAnnuncio = new Models.TRANSAZIONE_ANNUNCIO();
                transazioneAnnuncio.ID_TRANSAZIONE   = model.ID;
                transazioneAnnuncio.ID_ANNUNCIO      = (int)idAnnuncio;
                transazioneAnnuncio.PUNTI            = punti;
                transazioneAnnuncio.SOLDI            = Utility.cambioValuta(transazioneAnnuncio.PUNTI);
                transazioneAnnuncio.DATA_INSERIMENTO = DateTime.Now;
                transazioneAnnuncio.STATO            = (int)StatoPagamento.ACCETTATO;
                db.TRANSAZIONE_ANNUNCIO.Add(transazioneAnnuncio);
                db.SaveChanges();
            }

            // aggiunta credito
            ContoCorrenteCreditoModel credito = new ContoCorrenteCreditoModel(db, persona.ID_CONTO_CORRENTE);

            credito.Earn(model.ID, punti);

            BonusRicevutoViewModel modelEmail = new BonusRicevutoViewModel();

            modelEmail.Nome = model.NOME;
            modelEmail.NominativoDestinatario = persona.NOME + " " + persona.COGNOME;
            modelEmail.Bonus = Convert.ToDecimal(model.PUNTI).ToHappyCoin();

            SendNotifica(mittente, persona, TipoNotifica.Bonus, controller, "bonusRicevuto", modelEmail, attivita, db);
            TempData["BONUS"] = string.Format(Bonus.YouWin, punti, Language.Moneta);

            if (tipo != TipoTransazione.BonusLogin)
            {
                RefreshPunteggioUtente(db);
            }
        }
        private TRANSAZIONE SaveTransazionePerVenditore(DatabaseContext db, PERSONA venditore, CORRIERE_SERVIZIO_SPEDIZIONE spedizione)
        {
            // compratore paga venditore
            TRANSAZIONE transazione = new TRANSAZIONE();

            transazione.ID_CONTO_MITTENTE     = this.PERSONA.ID_CONTO_CORRENTE;
            transazione.ID_CONTO_DESTINATARIO = venditore.ID_CONTO_CORRENTE;
            transazione.NOME = Language.BuyTransaction + " " + this.ANNUNCIO.NOME;
            if (transazione.NOME.Length > 100)
            {
                transazione.NOME = transazione.NOME.Substring(0, 99);
            }
            transazione.PUNTI            = this.PUNTI;
            transazione.SOLDI            = Utility.cambioValuta(this.PUNTI);
            transazione.TIPO             = (int)TipoPagamento.HAPPY;
            transazione.DATA_INSERIMENTO = DateTime.Now;
            transazione.TEST             = 0;
            transazione.STATO            = (int)StatoPagamento.ACCETTATO;
            db.TRANSAZIONE.Add(transazione);
            if (db.SaveChanges() <= 0)
            {
                throw new Exception(string.Format(ExceptionMessage.NotSavedBidTransaction, this.ID));
            }

            TRANSAZIONE_ANNUNCIO transazioneAnnuncio = new Models.TRANSAZIONE_ANNUNCIO();

            transazioneAnnuncio.ID_TRANSAZIONE = transazione.ID;
            transazioneAnnuncio.ID_ANNUNCIO    = this.ID_ANNUNCIO;
            transazioneAnnuncio.PUNTI          = (decimal)transazione.PUNTI;
            transazioneAnnuncio.SOLDI          = (decimal)transazione.SOLDI;
            if (spedizione != null)
            {
                transazioneAnnuncio.PUNTI_SPEDIZIONE = (decimal)spedizione.PUNTI;
                transazioneAnnuncio.SOLDI_SPEDIZIONE = (decimal)spedizione.SOLDI;
            }
            transazioneAnnuncio.DATA_INSERIMENTO = DateTime.Now;
            transazioneAnnuncio.STATO            = (int)StatoPagamento.ACCETTATO;
            db.TRANSAZIONE_ANNUNCIO.Add(transazioneAnnuncio);
            if (db.SaveChanges() <= 0)
            {
                throw new Exception(string.Format(ExceptionMessage.NotSavedBidTransaction, this.ID));
            }

            return(transazione);
        }