// 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); }