private void DoPagamento(DatabaseContext db, TRANSAZIONE transazione) { if (transazione.PUNTI != null && transazione.PUNTI > 0) { ContoCorrenteCreditoModel credito = new ContoCorrenteCreditoModel(db, transazione.ID_CONTO_MITTENTE); credito.PayUserForBid(transazione.ID_CONTO_DESTINATARIO, this.ID, transazione.ID); //var listaCrediti = db.CONTO_CORRENTE_CREDITO.Where(m => m.ID_CONTO_CORRENTE == transazione.ID_CONTO_MITTENTE && // m.ID_OFFERTA_USCITA == this.ID && m.STATO == (int)StatoMoneta.SOSPESA).ToList(); //listaCrediti.ForEach(m => //{ // m.ID_TRANSAZIONE_USCITA = transazione.ID; // m.DATA_SCADENZA = DateTime.Now; // m.STATO = (int)StatoCredito.CEDUTO; //}); //if (db.SaveChanges() <= 0) // throw new Exception(string.Format(ExceptionMessage.NotSavedMoney, this.ID, String.Join(", ", listaCrediti.Select(m => m.ID)))); //// passo i punti al destinatario //CONTO_CORRENTE_CREDITO creditoDestinatario = new CONTO_CORRENTE_CREDITO(); //creditoDestinatario.ID_CONTO_CORRENTE = transazione.ID_CONTO_DESTINATARIO; //creditoDestinatario.ID_TRANSAZIONE_ENTRATA = transazione.ID; //creditoDestinatario.PUNTI = (decimal)transazione.PUNTI; //creditoDestinatario.SOLDI = Controllers.Utility.cambioValuta(transazione.PUNTI); //creditoDestinatario.GIORNI_SCADENZA = Convert.ToInt32(ConfigurationManager.AppSettings["GiorniScadenzaCredito"]); //creditoDestinatario.DATA_SCADENZA = DateTime.Now.AddDays(creditoDestinatario.GIORNI_SCADENZA); //creditoDestinatario.DATA_INSERIMENTO = DateTime.Now; //creditoDestinatario.STATO = (int)StatoCredito.ASSEGNATO; //db.CONTO_CORRENTE_CREDITO.Add(creditoDestinatario); //if (db.SaveChanges() <= 0) // throw new Exception(string.Format(ExceptionMessage.NotSavedMoneyForSeller, this.ID, creditoDestinatario.ID)); } }
public bool AddBonusCanalePubblicitario(DatabaseContext db, string promo) { int valorePromo = Convert.ToInt32(ConfigurationManager.AppSettings["bonusPromozione" + promo]); this.Persona.DATA_ACCESSO = DateTime.Now; db.Entry(this.Persona).State = EntityState.Modified; if (db.SaveChanges() > 0) { Guid tokenPortale = Guid.Parse(ConfigurationManager.AppSettings["portaleweb"]); TRANSAZIONE model = new TRANSAZIONE(); model.ID_CONTO_MITTENTE = db.ATTIVITA.Where(p => p.TOKEN == tokenPortale).SingleOrDefault().ID_CONTO_CORRENTE; model.ID_CONTO_DESTINATARIO = this.Persona.ID_CONTO_CORRENTE; model.TIPO = (int)TipoTransazione.BonusCanalePubblicitario; model.NOME = string.Format(App_GlobalResources.Bonus.AdChannel, promo); model.PUNTI = valorePromo; model.DATA_INSERIMENTO = DateTime.Now; model.STATO = (int)StatoPagamento.ACCETTATO; db.TRANSAZIONE.Add(model); db.SaveChanges(); if (model.PUNTI != null && model.PUNTI > 0) { ContoCorrenteCreditoModel credito = new ContoCorrenteCreditoModel(db, this.Persona.ID_CONTO_CORRENTE); credito.Earn(model.ID, (decimal)model.PUNTI); } return(true); } return(false); }
public void PayUserForBid(Guid idContoDestinatario, int idOfferta, int idTransazione) { var listaCrediti = _db.CONTO_CORRENTE_CREDITO.Where(m => m.ID_CONTO_CORRENTE == this.ID_CONTO_CORRENTE && m.ID_OFFERTA_USCITA == idOfferta && m.STATO == (int)StatoMoneta.SOSPESA).ToList(); listaCrediti.ForEach(m => { m.ID_TRANSAZIONE_USCITA = idTransazione; m.DATA_SCADENZA = DateTime.Now; m.STATO = (int)StatoCredito.CEDUTO; }); if (_db.SaveChanges() <= 0) { throw new Exception(string.Format(App_GlobalResources.ExceptionMessage.NotSavedMoney, idOfferta, String.Join(", ", listaCrediti.Select(m => m.ID)))); } ContoCorrenteCreditoModel creditoDestinatario = new ContoCorrenteCreditoModel(_db, idContoDestinatario); creditoDestinatario.AddCreditoSuDB(idTransazione, listaCrediti.Sum(m => m.PUNTI)); }
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); }