public ActionResult Profilo(string token) { PortaleWebProfiloViewModel viewModel = null; try { PortaleWebViewModel portale = (Session["portaleweb"] as List <PortaleWebViewModel>).Where(p => p.Token == token).SingleOrDefault(); viewModel = new PortaleWebProfiloViewModel(portale); using (DatabaseContext db = new DatabaseContext()) { int id = Convert.ToInt32(portale.Id); ATTIVITA model = db.ATTIVITA.SingleOrDefault(p => p.ID == id); viewModel.CopyModel(model, model.ATTIVITA_EMAIL.Where(e => e.ID_ATTIVITA == model.ID).ToList(), model.ATTIVITA_TELEFONO.Where(e => e.ID_ATTIVITA == model.ID).ToList()); DateTime unAnnoFa = DateTime.Now.AddYears(-1); // da sistemare e poi verificare che nella pubblicazione venga inviato anche il portale se necessario // e nel caso non ci siano, togliere scelta portale e verificare lato server l'assenza del dato // poi pensare alla visualizzazione del nome del portale sia sulle trattative che sulla visualizzazione // della vendita var bonus = db.TRANSAZIONE.Where(b => b.ID_CONTO_MITTENTE == model.ID_CONTO_CORRENTE && b.TIPO == (int)TipoTransazione.BonusFeedback && b.DATA_INSERIMENTO > unAnnoFa).ToList(); if (bonus != null) { viewModel.BonusSpeso = bonus.Sum(b => b.PUNTI); } } } catch (Exception exception) { Elmah.ErrorSignal.FromCurrentContext().Raise(exception); return(RedirectToAction("Index")); } return(View(viewModel)); }
public ActionResult Payment(PagamentoViewModel model) { model.WebSite = Request.UrlReferrer.Host; model.UrlRequest = Request.UrlReferrer.OriginalString; try { // verifico se non è un test locale if (Session["testPaymentFromLocalHost"] != null) { model.WebSite = "http://www.gratisforgratis.com"; model.UrlRequest = "/Home/Index"; model.Token = System.Configuration.ConfigurationManager.AppSettings["test"]; model.Test = 1; } using (DatabaseContext db = new DatabaseContext()) { // verifica autenticità del portale web tramite dominio e token ATTIVITA sito = db.ATTIVITA.FirstOrDefault(m => m.DOMINIO == model.WebSite && m.TOKEN == new Guid(model.Token)); if (sito != null) { SalvataggioPagamentoViewModel salvataggioPagamento = new SalvataggioPagamentoViewModel(model); salvataggioPagamento.PortaleWebID = sito.ID_CONTO_CORRENTE; // verifica se l'utente è registrato PERSONA utentePagato = db.PERSONA.FirstOrDefault(m => m.PERSONA_EMAIL.SingleOrDefault(item => item.TIPO == (int)TipoEmail.Registrazione).EMAIL == model.EmailReceivent); if (utentePagato != null) { salvataggioPagamento.UtentePagatoID = utentePagato.ID_CONTO_CORRENTE; Session["pagamento"] = salvataggioPagamento; } else { ModelState.AddModelError("Error", Language.ErrorNotUser); if (!String.IsNullOrEmpty(model.ReturnUrlForFailed)) { return(Redirect(model.ReturnUrlForFailed)); } } } else { ModelState.AddModelError("Error", Language.ErrorNotPartner); if (!String.IsNullOrEmpty(model.ReturnUrlForFailed)) { return(Redirect(model.ReturnUrlForFailed)); } } } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); ModelState.AddModelError("Error", ex.Message); } return(View(model)); }
public ActionResult Details(string token) { PortaleWebProfiloViewModel viewModel = null; try { PortaleWebViewModel portale = null; if (Session["portaleweb"] != null) { portale = (Session["portaleweb"] as List <PortaleWebViewModel>).Where(p => p.Token == token).SingleOrDefault(); } if (portale != null) { viewModel = new PortaleWebProfiloViewModel(portale); } using (DatabaseContext db = new DatabaseContext()) { ATTIVITA model = null; if (portale != null) { int id = Convert.ToInt32(portale.Id); model = db.ATTIVITA.SingleOrDefault(p => p.ID == id); } else { model = db.ATTIVITA.SingleOrDefault(p => p.TOKEN.ToString() == token); viewModel = new PortaleWebProfiloViewModel(); } // se la pagina non viene trovata if (model == null) { return(RedirectToAction("Index")); } viewModel.CopyModel(model, model.ATTIVITA_EMAIL.Where(e => e.ID_ATTIVITA == model.ID).ToList(), model.ATTIVITA_TELEFONO.Where(e => e.ID_ATTIVITA == model.ID).ToList()); DateTime unAnnoFa = DateTime.Now.AddYears(-1); var bonus = db.TRANSAZIONE.Where(b => b.ID_CONTO_MITTENTE == model.ID_CONTO_CORRENTE && b.TIPO == (int)TipoTransazione.BonusFeedback && b.DATA_INSERIMENTO > unAnnoFa).ToList(); if (bonus != null) { viewModel.BonusSpeso = bonus.Sum(b => b.PUNTI); } viewModel.LoadExtra(db, model); } } catch (Exception exception) { //Elmah.ErrorSignal.FromCurrentContext().Raise(exception); LoggatoreModel.Errore(exception); return(RedirectToAction("Index")); } Session["happyPageAperta"] = token; return(View(viewModel)); }
// 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); } }
public ActionResult Details(PortaleWebProfiloViewModel viewModel) { try { if (base.ModelState.IsValid) { using (DatabaseContext db = new DatabaseContext()) { // da modificare PortaleWebViewModel viewModel2 = (Session["portaleweb"] as List <PortaleWebViewModel>).Where(p => p.Token == viewModel.Token).SingleOrDefault(); int idPartner = Convert.ToInt32(viewModel2.Id); ATTIVITA model = db.ATTIVITA.Where(p => p.ID == idPartner).SingleOrDefault(); model.NOME = viewModel.Nome; model.DOMINIO = viewModel.Dominio; ATTIVITA_EMAIL modelEmail = model.ATTIVITA_EMAIL.SingleOrDefault(item => item.TIPO == (int)TipoEmail.Registrazione); modelEmail.EMAIL = viewModel.Email; db.ATTIVITA_EMAIL.Attach(modelEmail); ATTIVITA_TELEFONO modelTelefono = model.ATTIVITA_TELEFONO.SingleOrDefault(item => item.TIPO == (int)TipoTelefono.Privato); modelTelefono.TELEFONO = viewModel.Telefono; db.ATTIVITA_TELEFONO.Attach(modelTelefono); model.DATA_MODIFICA = DateTime.Now; db.Entry <ATTIVITA>(model).State = System.Data.Entity.EntityState.Modified; if (db.SaveChanges() > 0) { // trovare portaleweb modificato e sostituirlo //Session["portaleweb"] = model; Session["portaleweb"] = (Session["utente"] as PersonaModel).Persona.PERSONA_ATTIVITA .Select(item => new PortaleWebViewModel(item, item.ATTIVITA.ATTIVITA_EMAIL.Where(e => e.ID_ATTIVITA == item.ID_ATTIVITA).ToList(), item.ATTIVITA.ATTIVITA_TELEFONO.Where(t => t.ID_ATTIVITA == item.ID_ATTIVITA).ToList() )).ToList(); TempData["salvato"] = true; } } } } catch (Exception exception) { //Elmah.ErrorSignal.FromCurrentContext().Raise(exception); LoggatoreModel.Errore(exception); } return(View(viewModel)); }
public ActionResult PortaleWeb(string token = "") { ChatPortaleWebViewModel viewModel = new ChatPortaleWebViewModel(); PersonaModel utente = Session["utente"] as PersonaModel; if (!string.IsNullOrWhiteSpace(token)) { using (DatabaseContext db = new DatabaseContext()) { ATTIVITA attivitaChat = db.ATTIVITA.SingleOrDefault(m => m.TOKEN.ToString() == token && m.STATO != (int)Stato.ELIMINATO); viewModel.Attivita = new AttivitaModel(attivitaChat); viewModel.Attivita.Foto = attivitaChat.ATTIVITA_FOTO.OrderByDescending(m => m.ORDINE) .AsEnumerable().Select(m => new FotoModel(m.ALLEGATO)).ToList(); viewModel.Messaggi = ChatViewModel.GetListaChatAttivita(db, utente.Persona.ID, attivitaChat.ID); RefreshPunteggioUtente(db); } } // apre gli ultimi 30 messaggi con l'utente se selezionato, altrimenti ti fa selezionare la persona return(View(viewModel)); }
public ChatPortaleWebViewModel(ATTIVITA model) { Messaggi = new List <ChatViewModel>(); }
public bool SendNotifica(PERSONA mittente, PERSONA destinatario, TipoNotifica messaggio, ControllerContext controller, string view, object datiNotifica, ATTIVITA attivitaMittente = null, DatabaseContext db = null) { bool nuovaConnessione = true; try { if (db != null && db.Database.Connection.State == System.Data.ConnectionState.Open) { nuovaConnessione = false; } NOTIFICA notifica = new NOTIFICA(); notifica.ID_PERSONA = mittente.ID; if (attivitaMittente != null) { notifica.ID_ATTIVITA = attivitaMittente.ID; } notifica.ID_PERSONA_DESTINATARIO = destinatario.ID; notifica.MESSAGGIO = (int)messaggio; notifica.STATO = (int)StatoNotifica.ATTIVA; notifica.DATA_INSERIMENTO = DateTime.Now; if (nuovaConnessione) { db = new DatabaseContext(); } db.NOTIFICA.Add(notifica); return(db.SaveChanges() > 0); } catch (Exception eccezione) { Elmah.ErrorSignal.FromCurrentContext().Raise(eccezione); } finally { if (nuovaConnessione && db != null) { db.Database.Connection.Close(); } try { string indirizzoEmail = destinatario.PERSONA_EMAIL.SingleOrDefault(e => e.TIPO == (int)TipoEmail.Registrazione).EMAIL; // modificare oggetto recuperando dal tipo notifica la stringa string oggetto = Components.EnumHelper <TipoNotifica> .GetDisplayValue(messaggio); SendEmail(indirizzoEmail, oggetto, controller, view, datiNotifica); SendChat("", oggetto); } catch (Exception eccezione) { Elmah.ErrorSignal.FromCurrentContext().Raise(eccezione); } } return(false); }
public ActionResult Index(BonificoViewModel viewModel) { PersonaModel sessioneUtente = Session["utente"] as PersonaModel; try { using (DatabaseContext db = new DatabaseContext()) { // se esiste una sessione pagamento aperta e la mail ricevente dei soldi corrisponde a quella della login, // allora blocco la login e scatta l'errore CONTO_CORRENTE conto = db.CONTO_CORRENTE.Include("Persona").Include("Attivita").SingleOrDefault(m => m.TOKEN.ToString() == viewModel.Destinatario); if (conto == null) { ModelState.AddModelError("Error", string.Format(Language.ErrorPaymentUser, viewModel.Destinatario)); return(View(viewModel)); } ContoCorrenteMonetaModel model = new ContoCorrenteMonetaModel(); TRANSAZIONE pagamento = model.Pay(db, sessioneUtente.Persona.ID_CONTO_CORRENTE, conto.ID, viewModel.DescrizionePagamento, viewModel.TipoTransazione, (int)viewModel.Punti); this.RefreshPunteggioUtente(db); // impostare invio email pagamento effettuato try { EmailModel email = new EmailModel(ControllerContext); string indirizzoMail = string.Empty; string nominativo = string.Empty; // verifico se il destinatario è una persona o attività if (conto.PERSONA.Count > 0) { PERSONA persona = conto.PERSONA.SingleOrDefault(p => p.ID_CONTO_CORRENTE == conto.ID); if (persona != null) { indirizzoMail = db.PERSONA_EMAIL .SingleOrDefault(m => m.ID_PERSONA == persona.ID && m.TIPO == (int)TipoEmail.Registrazione).EMAIL; } } else { ATTIVITA attivita = conto.ATTIVITA.SingleOrDefault(p => p.ID_CONTO_CORRENTE == conto.ID); if (attivita != null) { indirizzoMail = db.ATTIVITA_EMAIL .SingleOrDefault(m => m.ID_ATTIVITA == attivita.ID && m.TIPO == (int)TipoEmail.Registrazione).EMAIL; } } // se ho trovato l'indirizzo mail if (!string.IsNullOrWhiteSpace(indirizzoMail)) { email.To.Add(new System.Net.Mail.MailAddress(indirizzoMail, nominativo)); email.Subject = string.Format(Email.PaymentFromPartnersSubject, pagamento.NOME, (Session["utente"] as PersonaModel).Persona.NOME + ' ' + (Session["utente"] as PersonaModel).Persona.COGNOME, nominativo) + " - " + WebConfigurationManager.AppSettings["nomeSito"]; email.Body = "PagamentoDaPartners"; email.DatiEmail = new SchedaPagamentoViewModel() { Nome = pagamento.NOME, Compratore = (Session["utente"] as PersonaModel).Persona.NOME + ' ' + (Session["utente"] as PersonaModel).Persona.COGNOME, Venditore = pagamento.CONTO_CORRENTE1.PERSONA.Select(item => item.NOME + ' ' + item.COGNOME).SingleOrDefault(), Punti = (int)pagamento.PUNTI, //Soldi = (int)pagamento.SOLDI, Data = pagamento.DATA_INSERIMENTO, Portale = nominativo, }; new EmailController().SendEmail(email); } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } //RemoveSessionPayment(); if (!String.IsNullOrEmpty(viewModel.UrlOk)) { return(Redirect(Request.Url.PathAndQuery)); } else if (!String.IsNullOrEmpty(viewModel.UrlKo)) { return(Redirect(viewModel.UrlKo)); } ViewData["messaggio"] = Language.TransactionOK; return(View(new BonificoViewModel())); } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); ModelState.AddModelError("Error", ex); } return(View(viewModel)); }
public ActionResult StoricoPagamenti(int pagina = 1) { List <SchedaPagamentoViewModel> risultato = new List <SchedaPagamentoViewModel>(); try { using (DatabaseContext db = new DatabaseContext()) { Guid utente = ((PersonaModel)Session["utente"]).Persona.ID_CONTO_CORRENTE; var query = db.TRANSAZIONE.Where(p => p.TEST == 0 && p.STATO == (int)StatoPagamento.ACCETTATO && (p.ID_CONTO_DESTINATARIO == utente || p.ID_CONTO_MITTENTE == utente)); int numeroElementi = Convert.ToInt32(WebConfigurationManager.AppSettings["numeroElementi"]); int elementiTrovati = query.Count(); ViewData["TotalePagine"] = (int)Math.Ceiling((decimal)elementiTrovati / (decimal)numeroElementi); ViewData["Pagina"] = pagina; pagina -= 1; string randomString = Utils.RandomString(3); if (elementiTrovati > 0) { query .OrderByDescending(item => item.STATO) //.ThenByDescending(item => item.DATA_INSERIMENTO) .OrderByDescending(item => item.DATA_INSERIMENTO) .Skip(pagina * numeroElementi) .Take(numeroElementi) .ToList() .ForEach(item => { string compratore = string.Empty; int idCompratore = 0; string venditore = string.Empty; int idVenditore = 0; if (item.CONTO_CORRENTE1.PERSONA.Count > 0) { PERSONA persona = item.CONTO_CORRENTE1.PERSONA.FirstOrDefault(); compratore = persona.NOME + " " + persona.COGNOME; idCompratore = persona.ID; } else { ATTIVITA attivita = item.CONTO_CORRENTE1.ATTIVITA.FirstOrDefault(); compratore = attivita.NOME; idCompratore = attivita.ID; } if (item.CONTO_CORRENTE.PERSONA.Count > 0) { PERSONA persona = item.CONTO_CORRENTE.PERSONA.FirstOrDefault(); venditore = persona.NOME + " " + persona.COGNOME; idVenditore = persona.ID; } else { ATTIVITA attivita = item.CONTO_CORRENTE.ATTIVITA.FirstOrDefault(); venditore = attivita.NOME; idVenditore = attivita.ID; } risultato.Add( new SchedaPagamentoViewModel() { Token = item.ID.ToString(), Nome = item.NOME, Compratore = compratore, CompratoreId = idCompratore, Venditore = venditore, VenditoreId = idVenditore, Punti = (int)item.PUNTI, //Soldi = (int)item.SOLDI, Data = item.DATA_INSERIMENTO, Baratti = db.OFFERTA_BARATTO.Where(b => b.OFFERTA.ID_TRANSAZIONE == item.ID && b.ANNUNCIO != null).Select(b => new VenditaViewModel() { Token = randomString + b.ANNUNCIO.TOKEN.ToString() + randomString, TipoAcquisto = b.ANNUNCIO.SERVIZIO != null ? TipoAcquisto.Servizio : TipoAcquisto.Oggetto, Nome = b.ANNUNCIO.NOME, Punti = b.ANNUNCIO.PUNTI, //Soldi = b.ANNUNCIO.SOLDI, }).ToList(), }); }); } } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } return(View(risultato)); }