public static DataTable VentasPorPeliculaPorTanda(string codigoinicio, string codigofin,
string fechainicio, string fechafin,
string salainicio, string salafin)
{
BsonJavaScript map = "function() {" +
" emit({Pelicula: this.Pelicula, CodigoPelicula: this.CodigoPelicula, Sala: this.Sala, CodigoSala: this.CodigoSala, NombreTanda: this.NombreTanda, Entrada: this.Entrada, Tanda : this.Tanda, Precio: this.Precio}, {Entradas: 1, TotalEntradas: this.Precio , Precio: this.Precio});" +
"}";
BsonJavaScript reduce2 = "function(key, values) {" +
" var result = {Entradas: 0, TotalEntradas: 0.0 , Precio: 0.0 };" +
" values.forEach(function(value) {" +
" result.Entradas += value.Entradas;" +
" result.TotalEntradas += value.TotalEntradas;" +
" result.Precio = value.Precio;" +
" });" +
" return result;" +
"}";
IMongoQuery QuerySala;
if (salainicio == salafin)
QuerySala = Query.EQ("CodigoSala", Convert.ToInt32(salainicio));
else
QuerySala = Query.GTE("CodigoSala", Convert.ToInt32(salainicio)).LTE(Convert.ToInt32(salafin));
BsonDateTime fechaini = BsonDateTime.Create(Convert.ToDateTime(fechainicio + " 00:00:00 AM").ToUniversalTime());
BsonDateTime fechafi = BsonDateTime.Create(Convert.ToDateTime(fechafin + " 23:59:59 PM").ToUniversalTime());
MapReduceResult Result = VariablesGlobales.EnithDB.GetCollection("VentaPeliculas").MapReduce(
Query.And(Query.GTE("Tanda", fechaini).LTE(fechafi),
Query.GTE("CodigoPelicula", Convert.ToInt32(codigoinicio)).LTE(Convert.ToInt32(codigofin)),
QuerySala, Query.EQ("Estado", "Pagado")),
map, reduce2, MapReduceOptions.SetOutput(MapReduceOutput.Inline));
IEnumerable
DataTable ResultT = new DataTable();
ResultT.Columns.Add("Pelicula");
ResultT.Columns.Add("CodigoPelicula");
ResultT.Columns.Add("Sala");
ResultT.Columns.Add("CodigoSala");
ResultT.Columns.Add("Entrada");
ResultT.Columns.Add("Precio");
ResultT.Columns.Add("Tanda");
ResultT.Columns.Add("NombreTanda");
ResultT.Columns.Add("Entradas");
ResultT.Columns.Add("TotalEntradas");
BsonElement value;
foreach (BsonDocument doc2 in doc1)
{
BsonDocument datospeli = (BsonDocument)(doc2["_id"]);
BsonDocument datosentrada = (BsonDocument)(doc2["value"]);
DataRow row = ResultT.NewRow();
row["Pelicula"] = datospeli.TryGetElement("Pelicula", out value) ? datospeli["Pelicula"].ToString() : "";
row["CodigoPelicula"] = datospeli.TryGetElement("CodigoPelicula", out value) ? Convert.ToInt32(datospeli["CodigoPelicula"].ToString()) : 0;
row["Sala"] = datospeli.TryGetElement("Sala", out value) ? datospeli["Sala"].ToString() : "";
row["CodigoSala"] = datospeli.TryGetElement("CodigoSala", out value) ? Convert.ToInt32(datospeli["CodigoSala"].ToString()) : 0;
row["Entrada"] = datospeli.TryGetElement("Entrada", out value) ? datospeli["Entrada"].ToString() : "1";
row["Entradas"] = datosentrada.TryGetElement("Entradas", out value) ? datosentrada["Entradas"].ToString() : "1";
row["Precio"] = datosentrada.TryGetElement("Precio", out value) ? datosentrada["Precio"].ToString() : "";
row["Tanda"] = datospeli.TryGetElement("Tanda", out value) ? datospeli["Tanda"].ToString() : "";
row["NombreTanda"] = datospeli.TryGetElement("NombreTanda", out value) ? datospeli["NombreTanda"].ToString() : "";
row["TotalEntradas"] = datosentrada.TryGetElement("TotalEntradas", out value) ? datosentrada["TotalEntradas"].ToString() : datosentrada["Precio"].ToString();
ResultT.Rows.Add(row);
}
return ResultT;
}
No hay comentarios:
Publicar un comentario