コード例 #1
0
        public bool SalvaSuDB(DatabaseContext db, PersonaModel utente = null)
        {
            // salvare su database
            PERSONA_SEGNALAZIONE model = new PERSONA_SEGNALAZIONE();

            if (utente != null)
            {
                model.ID_PERSONA = utente.Persona.ID;
            }
            model.IP             = IP;
            model.EMAIL_RISPOSTA = Email;
            model.OGGETTO        = Tipo.ToString() + ": " + Oggetto;
            model.TESTO          = Testo;
            if (Allegato != null)
            {
                model.ALLEGATO = UploadFile(Allegato);
            }
            model.CONTROLLER = Controller;
            model.VISTA      = Vista;
            model.DATA_INVIO = DateTime.Now;
            model.STATO      = (int)Stato.ATTIVO;
            db.PERSONA_SEGNALAZIONE.Add(model);
            bool risultato = db.SaveChanges() > 0;

            _Id = model.ID;
            return(risultato);
        }
コード例 #2
0
 public UtenteProfiloViewModel(PersonaModel model)
 {
     Token   = model.Persona.TOKEN.ToString();
     Foto    = model.Foto;
     Nome    = model.Persona.NOME;
     Cognome = model.Persona.COGNOME;
 }
コード例 #3
0
        public void SetDefault()
        {
            Baratti = new List <AnnuncioViewModel>();
            //BarattiToken = new List<string>();
            TipoOfferta = TipoPagamento.HAPPY;
            PersonaModel utente = (HttpContext.Current.Session["utente"] as PersonaModel);

            if (utente != null)
            {
                PERSONA_INDIRIZZO indirizzo = utente.Indirizzo.FirstOrDefault(m => m.TIPO == (int)TipoIndirizzo.Residenza);
                NominativoDestinatario = utente.NomeVisibile;
                PERSONA_TELEFONO telefono = utente.Telefono.FirstOrDefault(m => m.TIPO == (int)TipoTelefono.Privato);
                if (telefono != null)
                {
                    TelefonoDestinatario = telefono.TELEFONO;
                }
                if (indirizzo != null)
                {
                    CapDestinatario       = indirizzo.INDIRIZZO.COMUNE.CAP;
                    IndirizzoDestinatario = indirizzo.INDIRIZZO.INDIRIZZO1;
                    CivicoDestinatario    = indirizzo.INDIRIZZO.CIVICO;
                }
                PERSONA_INDIRIZZO indirizzoSpedizione = utente.Indirizzo.FirstOrDefault(m => m.TIPO == (int)TipoIndirizzo.Spedizione);
                if (indirizzoSpedizione != null && indirizzoSpedizione.PERSONA_INDIRIZZO_SPEDIZIONE != null && indirizzoSpedizione.PERSONA_INDIRIZZO_SPEDIZIONE.Count() > 0)
                {
                    PERSONA_INDIRIZZO_SPEDIZIONE datiSpedizione = indirizzoSpedizione.PERSONA_INDIRIZZO_SPEDIZIONE.FirstOrDefault();
                    NominativoDestinatario = datiSpedizione.NOMINATIVO;
                    TelefonoDestinatario   = datiSpedizione.TELEFONO;
                    InfoExtraDestinatario  = datiSpedizione.INFO_EXTRA;
                    CapDestinatario        = indirizzoSpedizione.INDIRIZZO.COMUNE.CAP;
                    IndirizzoDestinatario  = indirizzoSpedizione.INDIRIZZO.INDIRIZZO1;
                    CivicoDestinatario     = indirizzoSpedizione.INDIRIZZO.CIVICO;
                }
            }
        }
コード例 #4
0
        public bool SaveRicerca(DatabaseContext db, ControllerContext controller)
        {
            HttpCookie      cookie         = HttpContext.Current.Request.Cookies.Get("ricerca");
            PersonaModel    utente         = (HttpContext.Current.Request.IsAuthenticated) ? (HttpContext.Current.Session["utente"] as PersonaModel) : (HttpContext.Current.Session["utenteRicerca"] as PersonaModel);
            PERSONA_RICERCA personaRicerca = new PERSONA_RICERCA();
            RICERCA         ricerca        = new RICERCA();

            //model.UTENTE1 = utente;
            personaRicerca.ID_PERSONA = utente.Persona.ID;
            ricerca.ID_CATEGORIA      = Convert.ToInt32(cookie["IDCategoria"]);
            ricerca.NOME             = cookie["Nome"];
            ricerca.DATA_INSERIMENTO = DateTime.Now;
            ricerca.DATA_MODIFICA    = ricerca.DATA_INSERIMENTO;
            ricerca.STATO            = (int)Stato.ATTIVO;
            db.RICERCA.Add(ricerca);
            if (db.SaveChanges() > 0)
            {
                personaRicerca.ID_RICERCA = ricerca.ID;
                db.PERSONA_RICERCA.Add(personaRicerca);
                if (db.SaveChanges() > 0)
                {
                    ResetFiltriRicerca();
                    LoadProprieta(personaRicerca);
                    SendMailRicercaSalvata(utente, personaRicerca, controller);
                }
            }
            return(false);
        }
コード例 #5
0
        public int?eseguiFromStoredProcedure(string offerta, PersonaModel utente)
        {
            //string token = acquisto.Trim().Substring(3, acquisto.Trim().Length - 6);
            int idOfferta = Utility.DecodeToInt(offerta.Trim().Substring(3, offerta.Trim().Length - 6));

            using (DatabaseContext db = new DatabaseContext())
            {
                System.Data.Entity.Core.Objects.ObjectParameter errore = new System.Data.Entity.Core.Objects.ObjectParameter("Errore", typeof(ErrorePagamento));
                errore.Value = ErrorePagamento.Nessuno;
                Guid portaleWeb = Guid.Parse(System.Configuration.ConfigurationManager.AppSettings["portaleweb"]);

                // DEVO CAMBIARE E FARMI TORNARE IL TRANSAZIONE EFFETTUATO
                int?idPagamento = db.BENE_SAVE_PAGAMENTO(idOfferta, utente.Persona.ID_CONTO_CORRENTE, errore).FirstOrDefault();
                this.Errore = (ErrorePagamento)errore.Value;

                if (this.Errore != ErrorePagamento.Nessuno)
                {
                    return(null);
                }

                if (idPagamento == null)
                {
                    this.Errore = ErrorePagamento.Proprietario;
                }



                return(idPagamento);
            }
        }
コード例 #6
0
        public void AddCrediti(DatabaseContext db, int idOfferta, PersonaModel persona, int punti)
        {
            using (DbContextTransaction transazione = db.Database.BeginTransaction())
            {
                List <CONTO_CORRENTE_MONETA> lista = db.CONTO_CORRENTE_MONETA
                                                     .Where(item => item.ID_CONTO_CORRENTE == persona.Persona.ID_CONTO_CORRENTE).ToList();
                if (lista == null || lista.Count < punti)
                {
                    throw new Exception(App_GlobalResources.Language.ErrorMoney);
                }

                for (int i = 0; i < punti; i++)
                {
                    OFFERTA_CONTO_CORRENTE_MONETA model = new OFFERTA_CONTO_CORRENTE_MONETA();
                    model.ID_OFFERTA = idOfferta;
                    model.ID_CONTO_CORRENTE_MONETA = lista[i].ID;
                    model.DATA_INSERIMENTO         = DateTime.Now;
                    model.STATO = (int)StatoOfferta.ATTIVA;
                    db.OFFERTA_CONTO_CORRENTE_MONETA.Add(model);
                    db.CONTO_CORRENTE_MONETA.Attach(lista[i]);
                }
                db.SaveChanges();
                transazione.Commit();
            }
        }
コード例 #7
0
        public static bool IsUtenteAttivo(int tipoAzione, TempDataDictionary tempData = null)
        {
            PersonaModel utente      = (HttpContext.Current.Session["utente"] as PersonaModel);
            bool         reindirizza = true;

            if (utente.Persona.STATO == (int)Stato.INATTIVO)
            {
                reindirizza = false;
                if (tempData != null)
                {
                    tempData["completaRegistrazione"] = (tipoAzione == 0) ? Language.PubblicaAnnuncioCompletaRegistrazione : Language.AcquistaCompletaRegistrazione;
                }
            }

            if (utente.Email.SingleOrDefault(m => m.TIPO == (int)TipoEmail.Registrazione).STATO == (int)Stato.INATTIVO)
            {
                reindirizza = false;
                if (tempData != null)
                {
                    tempData["confermaEmail"] = (tipoAzione == 0) ? Language.PubblicaAnnuncioConfermaEmail : Language.AcquistaConfermaEmail;
                }
            }

            return(reindirizza);
        }
コード例 #8
0
 public bool IsVenditore(PersonaModel utente)
 {
     if ((Tipo == TipoVenditore.Persona && Persona.ID == utente.Persona.ID) || (Tipo == TipoVenditore.Attivita && utente.Attivita.Count(m => m.ID == Attivita.ID) > 0))
     {
         return(true);
     }
     return(false);
 }
コード例 #9
0
        private void SendMailRicercaSalvata(PersonaModel utente, PERSONA_RICERCA model, ControllerContext controller)
        {
            // invio email salvataggio ricerca
            EmailModel email = new EmailModel(controller);

            email.To.Add(new System.Net.Mail.MailAddress(utente.Email.FirstOrDefault(item => item.TIPO == (int)TipoEmail.Registrazione).EMAIL, utente.Persona.NOME + ' ' + utente.Persona.COGNOME));
            email.Subject   = string.Format(App_GlobalResources.Email.SearchSaveSubject, model.RICERCA.NOME) + " - " + WebConfigurationManager.AppSettings["nomeSito"];
            email.Body      = "SalvataggioRicerca";
            email.DatiEmail = model;
            new EmailController().SendEmail(email);
        }
コード例 #10
0
        public VerificaOfferta CheckAccettaOfferta(PersonaModel utente, OFFERTA model)
        {
            decimal credito = model.PERSONA.CONTO_CORRENTE.CONTO_CORRENTE_CREDITO
                              .Where(m => m.STATO == (int)StatoCredito.SOSPESO).Sum(m => m.PUNTI);

            //int credito = utente.Credito.Count(m => m.STATO == (int)StatoCredito.ASSEGNATO);

            if (model.PERSONA.STATO != (int)Stato.ATTIVO)
            {
                return(VerificaOfferta.CompratoreNonAttivo);
            }

            if (model.ID_PERSONA == utente.Persona.ID)
            {
                return(VerificaOfferta.OffertaNonValida);
            }

            if (!(model.STATO == (int)StatoOfferta.ATTIVA || model.STATO == (int)StatoOfferta.SOSPESA || model.STATO == (int)StatoOfferta.ACCETTATA_ATTESO_PAGAMENTO))
            {
                return(VerificaOfferta.OffertaNonDisponibile);
            }

            if (model.PUNTI > credito)
            {
                return(VerificaOfferta.CreditiNonSufficienti);
            }

            if (utente.Persona.STATO != (int)Stato.ATTIVO)
            {
                return(VerificaOfferta.VenditoreNonAttivo);
            }

            if (model.OFFERTA_SPEDIZIONE.Count() > 0)
            {
                OFFERTA_SPEDIZIONE spedizione = model.OFFERTA_SPEDIZIONE.FirstOrDefault(m => m.STATO != (int)StatoSpedizione.PAGATA);

                if (spedizione != null && spedizione.SOLDI > 0)
                {
                    return(VerificaOfferta.VerificaCartaDiCredito);
                }
            }

            if ((int)this.SOLDI > 0 && model.ANNUNCIO.TIPO_PAGAMENTO != (int)TipoPagamento.HAPPY)
            {
                return(VerificaOfferta.VerificaCartaDiCredito);
            }

            return(VerificaOfferta.Ok);
        }
コード例 #11
0
        public void SetDefault()
        {
            PersonaModel      utente    = (HttpContext.Current.Session["utente"] as PersonaModel);
            PERSONA_INDIRIZZO indirizzo = utente.Indirizzo.FirstOrDefault(m => m.TIPO == (int)TipoIndirizzo.Residenza);

            NominativoDestinatario = utente.NomeVisibile;
            PERSONA_TELEFONO telefono = utente.Telefono.FirstOrDefault(m => m.TIPO == (int)TipoTelefono.Privato);

            if (telefono != null)
            {
                TelefonoDestinatario = telefono.TELEFONO;
            }
            if (indirizzo != null)
            {
                CapDestinatario       = indirizzo.INDIRIZZO.COMUNE.CAP;
                IndirizzoDestinatario = indirizzo.INDIRIZZO.INDIRIZZO1;
                CivicoDestinatario    = indirizzo.INDIRIZZO.CIVICO;
            }
            PERSONA_INDIRIZZO indirizzoSpedizione = utente.Indirizzo.FirstOrDefault(m => m.TIPO == (int)TipoIndirizzo.Spedizione);

            if (indirizzoSpedizione != null && indirizzoSpedizione.PERSONA_INDIRIZZO_SPEDIZIONE != null && indirizzoSpedizione.PERSONA_INDIRIZZO_SPEDIZIONE.Count() > 0)
            {
                PERSONA_INDIRIZZO_SPEDIZIONE datiSpedizione = indirizzoSpedizione.PERSONA_INDIRIZZO_SPEDIZIONE.FirstOrDefault();
                NominativoDestinatario = datiSpedizione.NOMINATIVO;
                TelefonoDestinatario   = datiSpedizione.TELEFONO;
                InfoExtraDestinatario  = datiSpedizione.INFO_EXTRA;
                CapDestinatario        = indirizzoSpedizione.INDIRIZZO.COMUNE.CAP;
                IndirizzoDestinatario  = indirizzoSpedizione.INDIRIZZO.INDIRIZZO1;
                CivicoDestinatario     = indirizzoSpedizione.INDIRIZZO.CIVICO;
            }

            NomeTitolareCarta    = utente.Persona.NOME;
            CognomeTitolareCarta = utente.Persona.COGNOME;
            // caricare ultimo o i metodi di pagamento inseriti, caricandoli prima nella sessione utente
            PERSONA_METODO_PAGAMENTO metodoPagamento = utente.MetodoPagamento.LastOrDefault();

            if (metodoPagamento != null)
            {
                TipoCarta            = (TipoCartaCredito)metodoPagamento.TIPO_CARTA;
                NumeroCarta          = metodoPagamento.NUMERO;
                Cvv2                 = (int)metodoPagamento.CVV2;
                MeseScadenzaCarta    = (Month)metodoPagamento.MESE;
                AnnoScadenzaCarta    = (int)metodoPagamento.ANNO;
                NomeTitolareCarta    = metodoPagamento.NOME;
                CognomeTitolareCarta = metodoPagamento.COGNOME;
            }
        }
コード例 #12
0
 public void RemoveCrediti(DatabaseContext db, int idOfferta, PersonaModel persona)
 {
     foreach (OFFERTA_CONTO_CORRENTE_MONETA item in db.OFFERTA_CONTO_CORRENTE_MONETA.Where(item => item.ID_OFFERTA == idOfferta).ToList())
     {
         CONTO_CORRENTE_MONETA conto = item.CONTO_CORRENTE_MONETA;
         conto.STATO = (int)StatoMoneta.ASSEGNATA;
         db.CONTO_CORRENTE_MONETA.Attach(conto);
         var entry = db.Entry(conto);
         entry.Property(e => e.STATO).IsModified = true;
         if (db.SaveChanges() > 0)
         {
             db.OFFERTA_CONTO_CORRENTE_MONETA.Remove(item);
             db.SaveChanges();
         }
         else
         {
             throw new Exception(App_GlobalResources.Language.ErrorRecoveryPoints);
         }
     }
 }
コード例 #13
0
        public void Load(PersonaModel utente)
        {
            this.Email = utente.Email.SingleOrDefault(item =>
                                                      item.ID_PERSONA == utente.Persona.ID && item.TIPO == (int)TipoEmail.Registrazione)
                         .EMAIL;
            this.Nome    = utente.Persona.NOME;
            this.Cognome = utente.Persona.COGNOME;
            PERSONA_TELEFONO modelTelefono = utente.Telefono.SingleOrDefault(item =>
                                                                             item.ID_PERSONA == utente.Persona.ID && item.TIPO == (int)TipoTelefono.Privato);

            if (modelTelefono != null)
            {
                this.Telefono = modelTelefono.TELEFONO;
            }
            PERSONA_INDIRIZZO modelIndirizzo = utente.Indirizzo.SingleOrDefault(item =>
                                                                                item.ID_PERSONA == utente.Persona.ID && item.TIPO == (int)TipoIndirizzo.Residenza &&
                                                                                item.STATO == (int)Stato.ATTIVO);

            if (modelIndirizzo != null && modelIndirizzo.INDIRIZZO != null)
            {
                this.Citta     = modelIndirizzo.INDIRIZZO.COMUNE.NOME;
                this.IDCitta   = modelIndirizzo.INDIRIZZO.ID_COMUNE;
                this.Indirizzo = modelIndirizzo.INDIRIZZO.INDIRIZZO1;
                this.Civico    = modelIndirizzo.INDIRIZZO.CIVICO;
            }
            // caricamento indirizzo di spedizione
            PERSONA_INDIRIZZO modelIndirizzoSpedizione = utente.Indirizzo.SingleOrDefault(item =>
                                                                                          item.ID_PERSONA == utente.Persona.ID && item.TIPO == (int)TipoIndirizzo.Spedizione &&
                                                                                          item.STATO == (int)Stato.ATTIVO);

            if (modelIndirizzoSpedizione != null && modelIndirizzoSpedizione.INDIRIZZO != null)
            {
                this.CittaSpedizione     = modelIndirizzoSpedizione.INDIRIZZO.COMUNE.NOME;
                this.IDCittaSpedizione   = modelIndirizzoSpedizione.INDIRIZZO.ID_COMUNE;
                this.IndirizzoSpedizione = modelIndirizzoSpedizione.INDIRIZZO.INDIRIZZO1;
                this.CivicoSpedizione    = modelIndirizzoSpedizione.INDIRIZZO.CIVICO;
            }

            this.HasLoginFacebook = utente.Persona.FACEBOOK_TOKEN_PERMANENTE != null;
        }
コード例 #14
0
        public void RemoveCrediti(DatabaseContext db, int idOfferta, int punti, PersonaModel persona)
        {
            var listaCrediti = db.CONTO_CORRENTE_CREDITO.Where(m => m.ID_CONTO_CORRENTE == persona.Persona.ID_CONTO_CORRENTE &&
                                                               m.ID_OFFERTA_USCITA == idOfferta && m.STATO == (int)StatoMoneta.SOSPESA).ToList();

            listaCrediti.ForEach(m =>
            {
                m.ID_OFFERTA_USCITA = null;
                m.DATA_MODIFICA     = DateTime.Now;
                m.STATO             = (int)StatoCredito.ASSEGNATO;
            });
            if (db.SaveChanges() <= 0)
            {
                throw new Exception(App_GlobalResources.Language.ErrorRecoveryPoints);
            }
            // usato sull'annullo dell'offerta! 28-04-2018
            //for (int i=0;i<punti;i++)
            //{
            //    CONTO_CORRENTE_MONETA conto = db.CONTO_CORRENTE_MONETA.FirstOrDefault(m => m.ID_CONTO_CORRENTE == persona.Persona.ID_CONTO_CORRENTE && m.STATO == (int)StatoMoneta.SOSPESA);
            //    if (conto != null)
            //    {
            //        conto.STATO = (int)StatoMoneta.ASSEGNATA;
            //        db.CONTO_CORRENTE_MONETA.Attach(conto);
            //        var entry = db.Entry(conto);
            //        entry.Property(e => e.STATO).IsModified = true;
            //        if (db.SaveChanges() <= 0)
            //        {
            //            throw new Exception(App_GlobalResources.Language.ErrorRecoveryPoints);
            //        }
            //    }
            //    else
            //    {
            //        throw new Exception(App_GlobalResources.Language.ErrorRecoveryPoints);
            //    }
            //}
        }
コード例 #15
0
        public void SendEmail(System.Web.Mvc.ControllerContext controller, TRANSAZIONE pagamento, PersonaModel utente)
        {
            PERSONA venditore = pagamento.CONTO_CORRENTE.PERSONA.SingleOrDefault();

            // impostare invio email pagamento effettuato
            EmailModel email = new EmailModel(controller);

            email.To.Add(new System.Net.Mail.MailAddress(venditore.PERSONA_EMAIL.SingleOrDefault(e => e.TIPO == (int)TipoEmail.Registrazione).EMAIL));
            string nominativo = utente.Persona.NOME + " " + utente.Persona.COGNOME;

            email.Subject   = String.Format(Email.PaymentSubject, pagamento.NOME, nominativo) + " - " + WebConfigurationManager.AppSettings["nomeSito"];
            email.Body      = "Pagamento";
            email.DatiEmail = new SchedaPagamentoViewModel()
            {
                Nome       = pagamento.NOME,
                Compratore = nominativo,
                Venditore  = venditore.NOME + " " + venditore.COGNOME,
                Punti      = (int)pagamento.PUNTI,
                Soldi      = (int)pagamento.SOLDI,
                Data       = pagamento.DATA_INSERIMENTO,
            };
            new EmailController().SendEmail(email);
        }
コード例 #16
0
        public bool SalvaRegistrazione(ControllerContext controller, DatabaseContext db)
        {
            CONTO_CORRENTE conto = db.CONTO_CORRENTE.Create();

            conto.ID               = Guid.NewGuid();
            conto.TOKEN            = Guid.NewGuid();
            conto.DATA_INSERIMENTO = DateTime.Now;
            conto.STATO            = (int)Stato.ATTIVO;
            db.CONTO_CORRENTE.Add(conto);
            db.SaveChanges();
            PBKDF2  crypto  = new PBKDF2();
            PERSONA persona = db.PERSONA.Create();

            persona.TOKEN             = Guid.NewGuid();
            persona.TOKEN_PASSWORD    = crypto.GenerateSalt(1, 20);
            persona.PASSWORD          = crypto.Compute(this.Password.Trim(), persona.TOKEN_PASSWORD);
            persona.ID_CONTO_CORRENTE = conto.ID;
            persona.ID_ABBONAMENTO    = db.ABBONAMENTO.SingleOrDefault(item => item.NOME == "BASE").ID;
            persona.DATA_INSERIMENTO  = DateTime.Now;
            persona.STATO             = (int)Stato.INATTIVO;

            // solo in caso di accesso con FB
            persona.FACEBOOK_TOKEN_SESSIONE   = FacebookToken;
            persona.FACEBOOK_TOKEN_PERMANENTE = FacebookTokenPermanente;
            if (!string.IsNullOrWhiteSpace(this.Nome))
            {
                persona.NOME = this.Nome.Trim();
            }
            if (!string.IsNullOrWhiteSpace(this.Cognome))
            {
                persona.COGNOME = this.Cognome.Trim();
            }

            db.PERSONA.Add(persona);
            if (db.SaveChanges() > 0)
            {
                PERSONA_EMAIL personaEmail = db.PERSONA_EMAIL.Create();
                personaEmail.ID_PERSONA       = persona.ID;
                personaEmail.EMAIL            = this.Email.Trim();
                personaEmail.TIPO             = (int)TipoEmail.Registrazione;
                personaEmail.DATA_INSERIMENTO = DateTime.Now;
                personaEmail.STATO            = (int)Stato.INATTIVO;
                db.PERSONA_EMAIL.Add(personaEmail);

                if (db.SaveChanges() > 0)
                {
                    PersonaModel utente = new PersonaModel(persona);
                    // assegna bonus canale pubblicitario
                    if (HttpContext.Current.Request.Cookies.Get("GXG_promo") != null)
                    {
                        string promo = HttpContext.Current.Request.Cookies.Get("GXG_promo").Value;
                        utente.AddBonusCanalePubblicitario(db, promo);
                        // reset cookie
                        HttpCookie currentUserCookie = HttpContext.Current.Request.Cookies["GXG_promo"];
                        if (currentUserCookie != null)
                        {
                            HttpContext.Current.Response.Cookies.Remove("GXG_promo");
                            currentUserCookie.Expires = DateTime.Now.AddDays(-10);
                            currentUserCookie.Value   = null;
                            HttpContext.Current.Response.SetCookie(currentUserCookie);
                        }
                    }

                    InvioEmail(controller, persona, personaEmail);
                    return(true);
                }
            }
            return(false);
        }
コード例 #17
0
        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);
        }
コード例 #18
0
        public AnnuncioViewModel(DatabaseContext db, ANNUNCIO model)
        {
            this.SetProprietaIniziali();
            Id = model.ID;
            if (model.ID_ATTIVITA != null)
            {
                Venditore = new UtenteVenditaViewModel(model.ATTIVITA, model.PERSONA);
                SetFeedbackVenditore(model, TipoVenditore.Attivita);
            }
            else
            {
                Venditore = new UtenteVenditaViewModel(model.PERSONA);
                SetFeedbackVenditore(model, TipoVenditore.Persona);
            }
            Token         = model.TOKEN.ToString();
            Nome          = model.NOME;
            TipoPagamento = (TipoPagamento)model.TIPO_PAGAMENTO;
            if (model.ID_SERVIZIO != null)
            {
                TipoAcquisto = TipoAcquisto.Servizio;
            }
            //Punti = model.PUNTI.ToHappyCoin();
            Punti           = model.PUNTI.ToString();
            Soldi           = Convert.ToDecimal(model.SOLDI).ToString("C");
            DataInserimento = (DateTime)model.DATA_INSERIMENTO;
            CategoriaID     = model.ID_CATEGORIA;
            Categoria       = model.CATEGORIA.NOME;
            //TipoSpedizione = (Spedizione)model.TIPO_SPEDIZIONE;
            int venditaId = model.ID;

            Foto = model.ANNUNCIO_FOTO.Select(f => new AnnuncioFoto()
            {
                ID_ANNUNCIO      = f.ID_ANNUNCIO,
                ALLEGATO         = f.ALLEGATO,
                DATA_INSERIMENTO = f.DATA_INSERIMENTO,
                DATA_MODIFICA    = f.DATA_MODIFICA
            }).ToList();
            StatoVendita = (StatoVendita)model.STATO;
            Notificato   = (model.ANNUNCIO_NOTIFICA.Count > 0) ? true : false;
            var listaInteressati = model.ANNUNCIO_DESIDERATO.Where(f => f.ID_ANNUNCIO == model.ID);

            NumeroInteressati = listaInteressati.Count();
            PersonaModel utente = (HttpContext.Current.Session["utente"] as PersonaModel);

            if (utente != null)
            {
                int idUtente = utente.Persona.ID;
                Desidero = listaInteressati.FirstOrDefault(m => m.ID_PERSONA == idUtente) != null;
                // controllo se l'utente ha già proposto lo stesso annuncio
                int?     idAnnuncioOriginale = model.ID_ORIGINE;
                ANNUNCIO copiaAnnuncio       = db.ANNUNCIO.SingleOrDefault(m => m.ID_PERSONA == idUtente &&
                                                                           (m.STATO == (int)StatoVendita.ATTIVO || m.STATO == (int)StatoVendita.INATTIVO) &&
                                                                           ((m.ID_ORIGINE == idAnnuncioOriginale && idAnnuncioOriginale != null) ||
                                                                            m.ID_ORIGINE == model.ID));
                if (copiaAnnuncio != null)
                {
                    TokenAnnuncioCopiato = Utility.RandomString(3) + copiaAnnuncio.TOKEN + Utility.RandomString(3);
                }
            }
            CondivisioneFacebookG4G    = (StatoPubblicaAnnuncioFacebook?)model.CONDIVISIONE_FACEBOOK_G4G;
            CondivisioneFacebookUtente = (StatoPubblicaAnnuncioFacebook?)model.CONDIVISIONE_FACEBOOK_UTENTE;
            DataPubblicazioneFacebook  = model.DATA_PUBBLICAZIONE_FACEBOOK;
        }