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));
        }
示例#3
0
        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));
        }
示例#4
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);
            }
        }
示例#5
0
 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));
 }
示例#6
0
        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));
        }
示例#7
0
 public ChatPortaleWebViewModel(ATTIVITA model)
 {
     Messaggi = new List <ChatViewModel>();
 }
示例#8
0
        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));
        }