public List <ServizioViewModel> Get() { FormattableString query = $"SELECT * FROM Servizio"; DataSet dataSet = _db.Query(query); var dataTable = dataSet.Tables[0]; var eleServizi = new List <ServizioViewModel>(); foreach (DataRow row in dataTable.Rows) { FormattableString query2 = $"Select AVG(f.rating) as RatingMedio FROM feedback f INNER JOIN servizio s ON f.servizio = s.id WHERE s.id = {(int)row["Id"]}"; DataSet dataSet2 = _db.Query(query2); var dataTable2 = dataSet2.Tables[0]; var dataRow2 = dataTable2.Rows[0]; ServizioViewModel servizio; if (dataRow2.ItemArray[0] == DBNull.Value) { servizio = new ServizioViewModel((int)row["Id"], (string)row["Titolo"], (string)row["Descrizione"], 0); } else { servizio = new ServizioViewModel((int)row["Id"], (string)row["Titolo"], (string)row["Descrizione"], (decimal)dataRow2["RatingMedio"]); } eleServizi.Add(servizio); } return(eleServizi); }
public ServizioViewModel Get(int id) { FormattableString query = $"SELECT * FROM Servizio WHERE Id = {id}"; DataSet dataSet = _db.Query(query); ServizioViewModel servizio; var dataTable = dataSet.Tables[0]; foreach (DataRow row in dataTable.Rows) { FormattableString query2 = $"Select AVG(f.rating) as RatingMedio FROM feedback f INNER JOIN servizio s ON f.servizio = s.id WHERE s.id = {id}"; DataSet dataSet2 = _db.Query(query2); var dataTable2 = dataSet2.Tables[0]; var dataRow2 = dataTable2.Rows[0]; if (dataRow2.ItemArray[0] == DBNull.Value) { return(servizio = new ServizioViewModel((int)row["Id"], (string)row["Titolo"], (string)row["Descrizione"], 0)); } else { return(servizio = new ServizioViewModel((int)row["Id"], (string)row["Titolo"], (string)row["Descrizione"], (decimal)dataRow2["RatingMedio"])); } } return(null); }
private void SetFeedbackVenditoreServizio(DatabaseContext db, ServizioViewModel viewModel) { try { List <int> voti = db.ANNUNCIO_FEEDBACK .Where(item => (viewModel.PartnerId <= 0 && item.ANNUNCIO.ID_PERSONA == viewModel.VenditoreID) || (viewModel.PartnerId > 0 && item.ANNUNCIO.ID_ATTIVITA == viewModel.PartnerId)).Select(item => item.VOTO).ToList(); int votoMassimo = voti.Count * 10; if (voti.Count <= 0) { viewModel.VenditoreFeedback = -1; } else { int x = voti.Sum() / votoMassimo; viewModel.VenditoreFeedback = x * 100; } } catch (Exception eccezione) { Elmah.ErrorSignal.FromCurrentContext().Raise(eccezione); viewModel.VenditoreFeedback = -1; } }
// praticamente non usata private ServizioViewModel SetServizioViewModel(DatabaseContext db, ServizioViewModel servizio) { // gestito cosi, perchè nel caso faccio macroricerche, recupero lo stesso i dati personalizzati // sulla specifica sottocategoria. switch (servizio.CategoriaID) { default: break; } return(servizio); }
public void OnGet(int id) { ServizioViewModel = _apiServices.GetServizio(id); eleFeedback = _apiServices.GetServizioFeedbacks(id); }
public ActionResult Acquista(ServizioViewModel model) { if (model == null || string.IsNullOrWhiteSpace(model.Token)) { return(Redirect("/Servizi/Tutti")); } if (model.Offerta.TipoOfferta == TipoOfferta.Baratto && model.Offerta.ServiziBarattati != null && model.Offerta.ServiziBarattati.Length > 4) { ModelState.AddModelError("ErroreOfferta", ErroreOfferta.PrezzoErrato.ToString()); } if (CheckUtenteAttivo(1)) { return(RedirectToAction("Impostazioni", "Utente")); } string nomeView = "Index"; try { using (DatabaseContext db = new DatabaseContext()) { string tokenDecodificato = Server.UrlDecode(model.Token); string tokenPulito = tokenDecodificato.Substring(3).Substring(0, tokenDecodificato.Length - 6); Guid tokenGuid = Guid.Parse(tokenPulito); if (ModelState.IsValid) { ObjectParameter errore = new ObjectParameter("Errore", typeof(int)); errore.Value = 0; string baratti = ""; if (model.Offerta.TipoOfferta == TipoOfferta.Baratto) { XElement xml = new XElement("Root", model.Offerta.ServiziBarattati.Select((i, index) => new XElement("Guid", i) ) ); baratti = xml.ToString(); } int?idOfferta = db.BENE_SAVE_OFFERTA_SERVIZIO(tokenGuid, ((PersonaModel)Session["utente"]).Persona.ID_CONTO_CORRENTE, 1, (int)model.Offerta.TipoOfferta, model.Offerta.PuntiOfferti, Utils.cambioValuta(model.Offerta.PuntiOfferti), baratti, errore); if (idOfferta != null && Convert.ToInt32(errore.Value) == 0) { // impostare invio email offerta effettuata EmailModel email = new EmailModel(ControllerContext); email.To.Add(new System.Net.Mail.MailAddress(model.VenditoreToken.ToString(), App_GlobalResources.Email.BidOf + " " + model.VenditoreNominativo + " - " + System.Web.Configuration.WebConfigurationManager.AppSettings["nomeSito"])); email.Subject = App_GlobalResources.Email.BidSubject + " " + model.Nome; email.Body = "Offerta"; email.DatiEmail = model; new EmailController().SendEmail(email); return(RedirectToAction("OffertaInviata", "Servizio", new { idOfferta = idOfferta })); } // ERRORE ModelState.AddModelError("ErroreOfferta", ((ErroreOfferta)errore.Value).GetDisplayName()); } else { ModelState.AddModelError("ErroreOfferta", App_GlobalResources.Language.ErrorGenericBid); } int idUtente = (Session["utente"] as PersonaModel).Persona.ID; // recupero le informazioni sul servizio ANNUNCIO vendita = db.ANNUNCIO.Where(v => v.TOKEN == tokenGuid && v.SERVIZIO != null && v.ID_PERSONA != idUtente && (v.STATO == (int)StatoVendita.ATTIVO || v.STATO == (int)StatoVendita.BARATTOINCORSO)).FirstOrDefault(); // reindirizza alla lista generale di servizi if (vendita == null) { return(RedirectToAction("Tutti", "Servizi")); } nomeView = vendita.CATEGORIA.DESCRIZIONE; model.Id = (int)vendita.ID_SERVIZIO; model.CategoriaID = vendita.ID_CATEGORIA; model.Categoria = vendita.CATEGORIA.NOME; model.Token = Utils.RandomString(3) + vendita.TOKEN.ToString() + Utils.RandomString(3); model.Citta = vendita.OGGETTO.COMUNE.NOME; model.DataInserimento = vendita.DATA_INSERIMENTO; model.VenditoreToken = vendita.PERSONA.TOKEN; model.Foto = vendita.ANNUNCIO_FOTO.Select(f => f.FOTO.FOTO1).ToList(); model.Nome = vendita.NOME; model.Punti = vendita.PUNTI; model.Soldi = vendita.SOLDI; model.Lunedi = (bool)vendita.SERVIZIO.LUNEDI; model.Martedi = (bool)vendita.SERVIZIO.MARTEDI; model.Mercoledi = (bool)vendita.SERVIZIO.MERCOLEDI; model.Giovedi = (bool)vendita.SERVIZIO.GIOVEDI; model.Venerdi = (bool)vendita.SERVIZIO.VENERDI; model.Sabato = (bool)vendita.SERVIZIO.SABATO; model.Domenica = (bool)vendita.SERVIZIO.DOMENICA; model.Tutti = (bool)vendita.SERVIZIO.TUTTI; model.OraInizio = (TimeSpan)vendita.SERVIZIO.ORA_INIZIO_FERIALI; model.OraFine = (TimeSpan)vendita.SERVIZIO.ORA_FINE_FERIALI; model.OraInizio = (TimeSpan)vendita.SERVIZIO.ORA_INIZIO_FESTIVI; model.OraFine = (TimeSpan)vendita.SERVIZIO.ORA_FINE_FESTIVI; model.TipoPagamento = (TipoPagamento)vendita.TIPO_PAGAMENTO; model.VenditoreID = vendita.ID_PERSONA; model.VenditoreNominativo = vendita.PERSONA.NOME + ' ' + vendita.PERSONA.COGNOME; model.Tariffa = (Tariffa)vendita.SERVIZIO.TARIFFA; model.StatoVendita = (StatoVendita)vendita.STATO; model = SetServizioViewModel(db, model); SetFeedbackVenditoreServizio(db, model); } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } return(View(nomeView, model)); }
public ActionResult Acquista(string nome, string token) { ServizioViewModel servizio = new ServizioViewModel(); string nomeView = "Index"; try { TempData["azione"] = "Buy"; string tokenDecodificato = Server.UrlDecode(token); string tokenPulito = tokenDecodificato.Substring(3).Substring(0, tokenDecodificato.Length - 6); Guid tokenGuid = Guid.Parse(tokenPulito); // recuperare oggetto e visualizzare vista corretta using (DatabaseContext db = new DatabaseContext()) { ANNUNCIO vendita = db.ANNUNCIO.Where(v => v.TOKEN == tokenGuid && v.NOME == nome && v.SERVIZIO != null).FirstOrDefault(); // reindirizza alla lista generale di oggetti if (vendita == null) { return(RedirectToAction("Tutti", "Servizi")); } else if (vendita.STATO == (int)StatoVendita.BARATTATO || vendita.STATO == (int)StatoVendita.BARATTOINCORSO) { return(RedirectToAction("Barattato", "Servizio", new { nome = nome, token = token })); } nomeView = vendita.CATEGORIA.DESCRIZIONE; servizio.Id = (int)vendita.ID_SERVIZIO; servizio.CategoriaID = vendita.ID_CATEGORIA; servizio.Categoria = vendita.CATEGORIA.NOME; servizio.Token = Utils.RandomString(3) + Utils.Encode(vendita.TOKEN.ToString()) + Utils.RandomString(3); servizio.Citta = vendita.SERVIZIO.COMUNE.NOME; servizio.DataInserimento = vendita.DATA_INSERIMENTO; servizio.VenditoreToken = vendita.PERSONA.TOKEN; servizio.Foto = vendita.ANNUNCIO_FOTO.Select(f => f.FOTO.FOTO1).ToList(); servizio.Nome = vendita.NOME; servizio.Punti = vendita.PUNTI; servizio.Soldi = vendita.SOLDI; servizio.Lunedi = (bool)vendita.SERVIZIO.LUNEDI; servizio.Martedi = (bool)vendita.SERVIZIO.MARTEDI; servizio.Mercoledi = (bool)vendita.SERVIZIO.MERCOLEDI; servizio.Giovedi = (bool)vendita.SERVIZIO.GIOVEDI; servizio.Venerdi = (bool)vendita.SERVIZIO.VENERDI; servizio.Sabato = (bool)vendita.SERVIZIO.SABATO; servizio.Domenica = (bool)vendita.SERVIZIO.DOMENICA; if (vendita.SERVIZIO.TUTTI != null) { servizio.Tutti = (bool)vendita.SERVIZIO.TUTTI; } servizio.OraInizio = (TimeSpan)vendita.SERVIZIO.ORA_INIZIO_FERIALI; servizio.OraFine = (TimeSpan)vendita.SERVIZIO.ORA_FINE_FERIALI; if (vendita.SERVIZIO.ORA_INIZIO_FESTIVI != null) { servizio.OraInizioFestivita = (TimeSpan)vendita.SERVIZIO.ORA_INIZIO_FESTIVI; } if (vendita.SERVIZIO.ORA_FINE_FESTIVI != null) { servizio.OraFineFestivita = (TimeSpan)vendita.SERVIZIO.ORA_FINE_FESTIVI; } servizio.RisultatiFinali = vendita.SERVIZIO.RISULTATI_FINALI; servizio.ServiziOfferti = vendita.SERVIZIO.SERVIZI_OFFERTI; servizio.TipoPagamento = (TipoPagamento)vendita.TIPO_PAGAMENTO; servizio.VenditoreID = vendita.ID_PERSONA; servizio.VenditoreNominativo = vendita.PERSONA.NOME + ' ' + vendita.PERSONA.COGNOME; servizio.Tariffa = (Tariffa)vendita.SERVIZIO.TARIFFA; servizio.StatoVendita = (StatoVendita)vendita.STATO; servizio = SetServizioViewModel(db, servizio); SetFeedbackVenditoreServizio(db, servizio); // verifico che non stia provando ad accedere il venditore stesso if (servizio.VenditoreID == (Session["utente"] as PersonaModel).Persona.ID) { TempData["azione"] = "View"; } } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } ViewBag.Title = string.Format(App_GlobalResources.MetaTag.TitleService, servizio.Nome, servizio.Categoria); ViewBag.Description = string.Format(App_GlobalResources.MetaTag.DescriptionService, servizio.Nome, servizio.Categoria, servizio.Citta, servizio.Punti); ViewBag.Keywords = string.Format(App_GlobalResources.MetaTag.KeywordsService, servizio.Nome, servizio.Categoria, servizio.Citta, servizio.Punti); return(View(nomeView, servizio)); }