/// <summary> /// Creates a new order in database /// </summary> /// <param name="orderRequest">Order Model object with details</param> /// <returns>Order id (Guid)</returns> public Guid Add(Models.Order orderRequest) { // generate a new order id Guid orderId = Guid.NewGuid(); // Get data using Entity Framework using (SEIEntities context = new SEIEntities()) { context.Orders.Add(new Order { OrderId = orderId, ProductId = orderRequest.ProductId, CustomerId = orderRequest.CustomerId, OrderDate = orderRequest.OrderDate, Quantity = orderRequest.Quantity, PricePaid = orderRequest.PricePaid, ShippedDate = orderRequest.ShippedDate, // populate standard audit fields CreationDate = DateTime.Now, CreationUser = "******", LastUpdateDate = DateTime.Now, LastUpdateUser = "******" }); // save the data to order table context.SaveChanges(); // return the order id created return(orderId); } }
/// <summary> /// Checks if product is valid in database /// </summary> /// <param name="productId">Product Id (Guid)</param> /// <returns>If product is valid then true otherwise false</returns> public bool isValidProduct(Guid productId) { using (SEIEntities context = new SEIEntities()) { // check if any matching product exist based on product id return(context.Products.Any(i => i.ProductId == productId)); } }
/// <summary> /// Checks if customer is valid in database /// </summary> /// <param name="customerId"></param> /// <returns>If customer id is valid then true otherwise false</returns> public bool isValidCustomer(Guid customerId) { // Get data using Entity Framework using (SEIEntities context = new SEIEntities()) { // check if any record exist with customer id return(context.Customers.Any(i => i.CustomerId == customerId)); } }
/// <summary> /// Gets all products sorted by average rating by custimer highest to lowest /// </summary> /// <returns>List of products</returns> public List <Models.Product> GetProductsByRating() { // Get data using Entity Framework using (SEIEntities context = new SEIEntities()) { // map the data to Product Model before returning return(context.Products .OrderByDescending(i => i.AverageCustomerRating) // sort by ratings best on top .Select(i => new Models.Product { ProductId = i.ProductId, ProductName = i.ProductName, PricePerItem = i.PricePerItem, AverageCustomerRating = i.AverageCustomerRating }) .ToList()); } }
/// <summary> /// Gets all orders that are not shipped (have shipped date as null in order table) /// </summary> /// <returns>Orders List</returns> public List <Models.Order> GetPendingOrders() { // Get data using Entity Framework using (SEIEntities context = new SEIEntities()) { // ObjectSet<Order> orders = context.Orders; // get the pending orders which are not shipped // check based on shipped date. If there is no date then the order is not shipped return(context.Orders .Where(i => i.ShippedDate == null) .Select(i => new Models.Order { OrderId = i.OrderId, ProductId = i.ProductId, CustomerId = i.CustomerId, CustomerName = i.Customer.CustomerName, // get the customer name based on the foreign key relationship OrderDate = i.OrderDate, Quantity = i.Quantity, PricePaid = i.PricePaid }) .ToList()); } }
//Funcion encargada de realizar las consultas a la base de datos //Recibe como variable alm_codig que corresponde al codigo de el almacen y categoriaCod que corresponde al codigo de la categoria //Si alm_codigo y categoriaCod son igual a 0 se realiza la busqueda para todos los almacenes y categorias //Si alm_codigo es distinto de 0 y categoriaCod es igual a 0 se realiza la busqueda por el codigo de almacen y por todas las categorias //Si alm_codigo y categoriaCod son distintos de 0 se realiza la busqueda por codigo de almacen y por categoria public string dataAF(int alm_codigo, int categoriaCod) { var modelAF = new SEIEntities(); List <string> resAF = new List <string>(); if (alm_codigo == 0) { var queryEquipos = (from equipo in modelAF.ACFI_equipos join almacen in modelAF.ACFI_almacen on equipo.alm_codigo equals almacen.alm_codigo join articulos in modelAF.ACFI_articulo on equipo.art_codigo equals articulos.art_codigo join categoria in modelAF.ACFI_categoria on articulos.cat_codigo equals categoria.cat_codigo group equipo.alm_codigo by new{ alm_codigo = almacen.alm_codigo, alm_nombre = almacen.alm_nombre, equipo_codigo = articulos.art_codigo, art_nombre = articulos.art_nombre, cat_codigo = categoria.cat_codigo, cat_nombre = categoria.cat_nombre } into equip orderby equip.Key.alm_codigo ascending select new{ alm_codigo = equip.Key.alm_codigo, alm_nombre = equip.Key.alm_nombre, equipo_codigo = equip.Key.equipo_codigo, art_nombre = equip.Key.art_nombre, cat_codigo = equip.Key.cat_codigo, cat_nombre = equip.Key.cat_nombre, cant = equip.Count() } ); foreach (var resultequipos in queryEquipos) { resAF.Add(JsonConvert.SerializeObject(new{ alm_codigo = resultequipos.alm_codigo, alm_nombre = resultequipos.alm_nombre, cat_codigo = resultequipos.cat_codigo, cat_nombre = resultequipos.cat_nombre, art_codigo = resultequipos.equipo_codigo, art_nombre = resultequipos.art_nombre, cantidad = resultequipos.cant } )); } } else if (categoriaCod == 0) { var queryEquipos = (from equipo in modelAF.ACFI_equipos join almacen in modelAF.ACFI_almacen on equipo.alm_codigo equals almacen.alm_codigo join articulos in modelAF.ACFI_articulo on equipo.art_codigo equals articulos.art_codigo join categoria in modelAF.ACFI_categoria on articulos.cat_codigo equals categoria.cat_codigo where equipo.alm_codigo == alm_codigo group equipo.alm_codigo by new{ alm_codigo = almacen.alm_codigo, alm_nombre = almacen.alm_nombre, equipo_codigo = articulos.art_codigo, art_nombre = articulos.art_nombre, cat_codigo = categoria.cat_codigo, cat_nombre = categoria.cat_nombre } into equip orderby equip.Key.alm_codigo ascending select new{ alm_codigo = equip.Key.alm_codigo, alm_nombre = equip.Key.alm_nombre, equipo_codigo = equip.Key.equipo_codigo, art_nombre = equip.Key.art_nombre, cat_codigo = equip.Key.cat_codigo, cat_nombre = equip.Key.cat_nombre, cant = equip.Count() } ); foreach (var resultequipos in queryEquipos) { resAF.Add(JsonConvert.SerializeObject(new{ alm_codigo = resultequipos.alm_codigo, alm_nombre = resultequipos.alm_nombre, cat_codigo = resultequipos.cat_codigo, cat_nombre = resultequipos.cat_nombre, art_codigo = resultequipos.equipo_codigo, art_nombre = resultequipos.art_nombre, cantidad = resultequipos.cant } )); } } else { var queryEquipos = (from equipo in modelAF.ACFI_equipos join almacen in modelAF.ACFI_almacen on equipo.alm_codigo equals almacen.alm_codigo join articulos in modelAF.ACFI_articulo on equipo.art_codigo equals articulos.art_codigo join categoria in modelAF.ACFI_categoria on articulos.cat_codigo equals categoria.cat_codigo where equipo.alm_codigo == alm_codigo where articulos.cat_codigo == categoriaCod group equipo.alm_codigo by new{ alm_codigo = almacen.alm_codigo, alm_nombre = almacen.alm_nombre, equipo_codigo = articulos.art_codigo, art_nombre = articulos.art_nombre, cat_codigo = categoria.cat_codigo, cat_nombre = categoria.cat_nombre } into equip orderby equip.Key.alm_codigo ascending select new{ alm_codigo = equip.Key.alm_codigo, alm_nombre = equip.Key.alm_nombre, equipo_codigo = equip.Key.equipo_codigo, art_nombre = equip.Key.art_nombre, cat_codigo = equip.Key.cat_codigo, cat_nombre = equip.Key.cat_nombre, cant = equip.Count() } ); foreach (var resultequipos in queryEquipos) { resAF.Add(JsonConvert.SerializeObject(new{ alm_codigo = resultequipos.alm_codigo, alm_nombre = resultequipos.alm_nombre, cat_codigo = resultequipos.cat_codigo, cat_nombre = resultequipos.cat_nombre, art_codigo = resultequipos.equipo_codigo, art_nombre = resultequipos.art_nombre, cantidad = resultequipos.cant } )); } } string json = JsonConvert.SerializeObject(resAF, Newtonsoft.Json.Formatting.None); string resultado = json.Replace("\\", ""); resultado = resultado.Replace("[\"", "["); resultado = resultado.Replace("}\",\"{", "},{"); return(resultado.Replace("\"]", "]")); }
//Funcion encargada de buscar la cantidad se PDA que posee un lider ademas devuelte el total de las PDA disponibles en bodega //la busqueda se realiza en base al nombre de el almacen que corresponde al nombre de el lider espacio apellido paterno //la funcion sola hace la comparacion independiente de mayusculas o acentos que pueda contener el nombre public string GetXNombre(string nombre) { var modelAF = new SEIEntities(); List <string> resAF = new List <string>(); int codAlmacen = 0; //Debido a que linq no interpreta la comparacion de acentos para buscar el almacen primero se listan y se realiza el recorrido //por cada uno comparando el nombre para poder obtener el codigo de el almacen y asi realizar la condicion en la consulta en base al codigo foreach (var almacenList in modelAF.ACFI_almacen) { if (String.Compare(nombre, almacenList.alm_nombre, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase) == 0) { codAlmacen = (int)almacenList.alm_codigo; } } var queryEquipos = (from equipo in modelAF.ACFI_equipos join almacen in modelAF.ACFI_almacen on equipo.alm_codigo equals almacen.alm_codigo join articulos in modelAF.ACFI_articulo on equipo.art_codigo equals articulos.art_codigo join categoria in modelAF.ACFI_categoria on articulos.cat_codigo equals categoria.cat_codigo where equipo.alm_codigo == codAlmacen where articulos.cat_codigo == 4 group equipo.alm_codigo by new{ alm_codigo = almacen.alm_codigo, alm_nombre = almacen.alm_nombre, cat_codigo = categoria.cat_codigo, cat_nombre = categoria.cat_nombre } into equip orderby equip.Key.alm_codigo ascending select new{ alm_codigo = equip.Key.alm_codigo, alm_nombre = equip.Key.alm_nombre, cat_codigo = equip.Key.cat_codigo, cat_nombre = equip.Key.cat_nombre, cant = equip.Count() } ); var queryDisponibles = (from equipo in modelAF.ACFI_equipos join almacen in modelAF.ACFI_almacen on equipo.alm_codigo equals almacen.alm_codigo join articulos in modelAF.ACFI_articulo on equipo.art_codigo equals articulos.art_codigo join categoria in modelAF.ACFI_categoria on articulos.cat_codigo equals categoria.cat_codigo where equipo.alm_codigo == 24 where articulos.cat_codigo == 4 group equipo.alm_codigo by new{ alm_codigo = almacen.alm_codigo, alm_nombre = almacen.alm_nombre, cat_codigo = categoria.cat_codigo, cat_nombre = categoria.cat_nombre } into equip orderby equip.Key.alm_codigo ascending select new{ alm_codigo = equip.Key.alm_codigo, alm_nombre = equip.Key.alm_nombre, cat_codigo = equip.Key.cat_codigo, cat_nombre = equip.Key.cat_nombre, cant = equip.Count() } ); foreach (var resultDisponibles in queryDisponibles) { foreach (var resultequipos in queryEquipos) { resAF.Add(JsonConvert.SerializeObject(new{ alm_codigo = resultequipos.alm_codigo, alm_nombre = resultequipos.alm_nombre, cat_codigo = resultequipos.cat_codigo, cat_nombre = resultequipos.cat_nombre, cantidad = resultequipos.cant, enBodega = resultDisponibles.cant } )); } } string json = JsonConvert.SerializeObject(resAF, Newtonsoft.Json.Formatting.None); string resultado = json.Replace("\\", ""); resultado = resultado.Replace("[\"", "["); resultado = resultado.Replace("}\",\"{", "},{"); return(resultado.Replace("\"]", "]")); }