コード例 #1
0
ファイル: GruposController.cs プロジェクト: zimler/Inventory
        public ActionResult Index()
        {
            DateTime inicio = DateTime.Now;

            string user = User.Identity.GetUserName();

            using (InventarioEntities db = new InventarioEntities())
            {
                var enCapsulas = db.CapsulasItems
                                 .Where(s => s.Capsulas.IdUsuario == user)
                                 .GroupBy(t => t.ItemID)
                                 .Select(u => new { ItemID = u.Key, CantidadCapsula = u.Sum(v => v.Cantidad) }).ToList();

                var inventario = db.Inventarios
                                 .Where(s => s.IdUsuario == user)
                                 .Select(u => new { ItemID = u.ItemID, Cantidad = u.Cantidad }).ToList();

                var model = GroupsXml.Select(p => new GrupoViewModel
                {
                    GroupID       = p.GroupID,
                    Total         = inventario.Where(s => p.Types.SelectMany(t => t.Items).Any(u => u.ItemID == s.ItemID)).DefaultIfEmpty().Sum(v => v == null ? 0 : v.Cantidad),
                    TotalCapsulas = enCapsulas.Where(s => p.Types.SelectMany(t => t.Items).Any(u => u.ItemID == s.ItemID)).DefaultIfEmpty().Sum(v => v == null ? 0 : v.CantidadCapsula)
                }).ToList();

                double elapsed = (DateTime.Now - inicio).TotalMilliseconds;

                return(View(model));
            }
        }
コード例 #2
0
        public JsonResult GroupsTotals()
        {
            DateTime inicio = DateTime.Now;

            var enCapsules = Database.CapsulesItems
                             .Where(s => s.Capsules.UserId == Username)
                             .GroupBy(t => t.ItemId)
                             .Select(u => new { ItemId = u.Key, CapsuleQuantity = u.Sum(v => v.Quantity) }).ToList();

            var inventario = Database.InventoriesItems
                             .Where(s => s.Inventories.UserId == Username)
                             .Select(u => new { ItemId = u.ItemId, Quantity = u.Quantity }).ToList();

            var model = GroupsXml.Select(p => new GroupViewModel {
                GroupId       = p.GroupId,
                GroupName     = Resources.Groups.ResourceManager.GetString(p.GroupId),
                TotalQuantity = inventario.Where(s => p.Types.SelectMany(t => t.Items).Any(u => u.ItemId == s.ItemId)).DefaultIfEmpty().Sum(v => v == null ? 0 : v.Quantity),
                CapsulesTotal = enCapsules.Where(s => p.Types.SelectMany(t => t.Items).Any(u => u.ItemId == s.ItemId)).DefaultIfEmpty().Sum(v => v == null ? 0 : v.CapsuleQuantity)
            }).ToList();

            model.Add(new GroupViewModel {
                GroupId       = GroupIdAll,
                GroupName     = Resources.Groups.ResourceManager.GetString(GroupIdAll),
                TotalQuantity = model.Sum(p => p.TotalQuantity),
                CapsulesTotal = model.Sum(p => p.CapsulesTotal)
            });

            double elapsed = (DateTime.Now - inicio).TotalMilliseconds;

            return(Json(model, JsonRequestBehavior.AllowGet));
        }
コード例 #3
0
        public ActionResult Manage(string id, bool?editing)
        {
            Dictionary <string, string> groups = GroupsXml.Select(p => new { GroupId = p.GroupId, Name = Resources.Groups.ResourceManager.GetString(p.GroupId) }).ToDictionary(p => p.GroupId, q => q.Name);

            groups.Add(GroupIdAll, Resources.Groups.ResourceManager.GetString(GroupIdAll));

            var model = new ManageViewModel {
                Groups = groups
            };

            if (!string.IsNullOrEmpty(id))
            {
                if (groups.ContainsKey(id))
                {
                    model.GroupId = id;
                    model.Editing = editing.GetValueOrDefault();
                }
                else
                {
                    return(new HttpStatusCodeResult(System.Net.HttpStatusCode.NotFound, "GroupId does not exists"));
                }
            }
            else
            {
                model.GroupId = GroupsXml.First().GroupId;
                model.Editing = false;
            }

            return(View(model));
        }
コード例 #4
0
ファイル: GruposController.cs プロジェクト: zimler/Inventory
        private List <GrupoViewModel> RecuperacionGrupos(string id)
        {
            if (!string.IsNullOrWhiteSpace(id) && !GroupsXml.Any(p => p.GroupID == id))
            {
                return(null);
            }

            DateTime inicio = DateTime.Now;

            using (InventarioEntities db = new InventarioEntities())
            {
                string user = User.Identity.GetUserName();

                var enCapsulas = db.CapsulasItems
                                 .Where(s => s.Capsulas.IdUsuario == user)
                                 .GroupBy(t => t.ItemID)
                                 .Select(u => new { ItemID = u.Key, CantidadCapsula = u.Sum(v => v.Cantidad) }).ToList();

                var inventario = db.Inventarios
                                 .Where(s => s.IdUsuario == user)
                                 .Select(u => new { ItemID = u.ItemID, Cantidad = u.Cantidad }).ToList();


                var grupos = GroupsXml.Where(z => string.IsNullOrWhiteSpace(id) || z.GroupID == id)
                             .Select(p => new GrupoViewModel
                {
                    GroupID = p.GroupID,
                    Tipos   = p.Types.Select(q => new TipoViewModel
                    {
                        TypeID = q.TypeID,
                        Items  = q.Items.Select(r => new ItemInventoryViewModel
                        {
                            CurrentItem      = r,
                            Cantidad         = inventario.SingleOrDefault(s => s.ItemID == r.ItemID) == null ? 0 : inventario.Single(s => s.ItemID == r.ItemID).Cantidad,
                            CantidadCapsulas = enCapsulas.SingleOrDefault(s => s.ItemID == r.ItemID) == null ? 0 : enCapsulas.Single(s => s.ItemID == r.ItemID).CantidadCapsula
                        })
                    })
                });
                double elapsed = (DateTime.Now - inicio).TotalMilliseconds;

                var lista = new List <GrupoViewModel>();
                if (!string.IsNullOrWhiteSpace(id))
                {
                    var model = grupos.Single();
                    model.Total         = model.Tipos.SelectMany(q => q.Items).Sum(r => r.Cantidad);
                    model.TotalCapsulas = model.Tipos.SelectMany(q => q.Items).Sum(r => r.CantidadCapsulas);

                    lista.Add(model);
                }
                else
                {
                    lista = grupos.ToList();
                }

                return(lista);
            }
        }
コード例 #5
0
        private ActionResult GetItems(string groupId, bool ignoreZeroQuantity)
        {
            bool allGroups = groupId == GroupIdAll;

            if (!allGroups && !GroupsXml.Any(p => p.GroupId == groupId))
            {
                return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "GroupId does not exists"));
            }

            DateTime inicio = DateTime.Now;

            var enCapsules = Database.CapsulesItems
                             .Where(s => s.Capsules.UserId == Username)
                             .GroupBy(t => t.ItemId)
                             .Select(u => new { ItemId = u.Key, CapsulesQuantity = u.Sum(v => v.Quantity) }).ToList();

            var inventario = Database.InventoriesItems
                             .Where(s => s.Inventories.UserId == Username)
                             .Select(u => new { ItemId = u.ItemId, Quantity = u.Quantity }).ToList();

            double elapsed = (DateTime.Now - inicio).TotalMilliseconds;

            var itemsGroups = ItemsXml
                              .Where(z => (allGroups || z.GroupId == groupId) && (ignoreZeroQuantity || (inventario.Any(y => y.ItemId == z.ItemId) || enCapsules.Any(y => y.ItemId == z.ItemId))))
                              .Select(y => new {
                GroupId          = y.GroupId,
                Item             = ItemBase.Create(y),
                Quantity         = inventario.SingleOrDefault(s => s.ItemId == y.ItemId) == null ? 0 : inventario.Single(s => s.ItemId == y.ItemId).Quantity,
                CapsulesQuantity = enCapsules.SingleOrDefault(s => s.ItemId == y.ItemId) == null ? 0 : enCapsules.Single(s => s.ItemId == y.ItemId).CapsulesQuantity
            })
                              .ToList();

            if (itemsGroups.Count == 0)
            {
                return(Json(new { Result = false }, JsonRequestBehavior.DenyGet));
            }

            var groups = itemsGroups
                         .GroupBy(d => d.GroupId)
                         .Select(p => new {
                GroupId = p.Key,
                Types   = p.GroupBy(e => e.Item.TypeId)
                          .Select(q => new {
                    TypeId           = q.Key,
                    Quantity         = q.Sum(f => f.Quantity),
                    CapsulesQuantity = q.Sum(f => f.CapsulesQuantity),
                    Items            = q.Select(r => new {
                        CurrentItem      = r.Item,
                        Quantity         = r.Quantity,
                        CapsulesQuantity = r.CapsulesQuantity
                    })
                })
            });

            return(Json(new { Result = true, Groups = groups }, JsonRequestBehavior.DenyGet));
        }
コード例 #6
0
ファイル: GruposController.cs プロジェクト: zimler/Inventory
        public ActionResult Edit(string id)
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                return(new HttpNotFoundResult());
            }
            if (!GroupsXml.Any(p => p.GroupID == id))
            {
                return(new HttpNotFoundResult());
            }

            using (InventarioEntities db = new InventarioEntities())
            {
                string user = User.Identity.GetUserName();

                var enCapsulas = db.CapsulasItems
                                 .Where(s => s.Capsulas.IdUsuario == user)
                                 .GroupBy(t => t.ItemID)
                                 .Select(u => new { ItemID = u.Key, CantidadCapsula = u.Sum(v => v.Cantidad) }).ToList();

                var inventario = db.Inventarios
                                 .Where(s => s.IdUsuario == user)
                                 .Select(u => new { ItemID = u.ItemID, Cantidad = u.Cantidad }).ToList();

                var grupo = GroupsXml.Where(z => z.GroupID == id)
                            .Select(p => new
                {
                    GroupID = p.GroupID,
                    Items   = p.Types.SelectMany(z => z.Items).Select(r => new ItemEditViewModel
                    {
                        CurrentItem      = r,
                        Cantidad         = inventario.SingleOrDefault(s => s.ItemID == r.ItemID) == null ? 0 : inventario.Single(s => s.ItemID == r.ItemID).Cantidad,
                        CantidadCapsulas = enCapsulas.SingleOrDefault(s => s.ItemID == r.ItemID) == null ? 0 : enCapsulas.Single(s => s.ItemID == r.ItemID).CantidadCapsula
                    })
                }).Single();

                GrupoEditViewModel model = new GrupoEditViewModel();
                model.GroupID       = grupo.GroupID;
                model.Items         = grupo.Items.ToList();
                model.Total         = model.Items.Sum(r => r.Cantidad);
                model.TotalCapsulas = model.Items.Sum(r => r.CantidadCapsulas);

                return(View(model));
            }
        }
コード例 #7
0
ファイル: GruposController.cs プロジェクト: zimler/Inventory
        public ActionResult Difference()
        {
            using (InventarioEntities db = new InventarioEntities())
            {
                string user = User.Identity.GetUserName();
                if (user != "*****@*****.**" && user != "*****@*****.**")
                {
                    return(new HttpNotFoundResult());
                }

                DifferenceViewModel model = new DifferenceViewModel();
                string usuarioA           = user;
                string usuarioB           = (user == "*****@*****.**" ? "*****@*****.**" : "*****@*****.**");

                model.UsuarioA = usuarioA;
                model.UsuarioB = usuarioB;

                var inventarioA = db.Inventarios
                                  .Where(s => s.IdUsuario == usuarioA)
                                  .Select(u => new ItemBasico {
                    ItemID = u.ItemID, Cantidad = u.Cantidad
                }).ToList();
                var inventarioB = db.Inventarios
                                  .Where(s => s.IdUsuario == usuarioB)
                                  .Select(u => new ItemBasico {
                    ItemID = u.ItemID, Cantidad = u.Cantidad
                }).ToList();

                var capsulasA = db.CapsulasItems
                                .Where(s => s.Capsulas.IdUsuario == usuarioA)
                                .GroupBy(t => t.ItemID)
                                .Select(u => new ItemBasico {
                    ItemID = u.Key, Cantidad = u.Sum(v => v.Cantidad)
                });
                var capsulasB = db.CapsulasItems
                                .Where(s => s.Capsulas.IdUsuario == usuarioB)
                                .GroupBy(t => t.ItemID)
                                .Select(u => new ItemBasico {
                    ItemID = u.Key, Cantidad = u.Sum(v => v.Cantidad)
                });

                foreach (var itemC in capsulasA)
                {
                    var itemI = inventarioA.SingleOrDefault(f => f.ItemID == itemC.ItemID);
                    if (itemI == null)
                    {
                        inventarioA.Add(new ItemBasico {
                            ItemID = itemC.ItemID, Cantidad = itemC.Cantidad
                        });
                    }
                    else
                    {
                        itemI.Cantidad += itemC.Cantidad;
                    }
                }

                foreach (var itemC in capsulasB)
                {
                    var itemI = inventarioB.SingleOrDefault(f => f.ItemID == itemC.ItemID);
                    if (itemI == null)
                    {
                        inventarioB.Add(new ItemBasico {
                            ItemID = itemC.ItemID, Cantidad = itemC.Cantidad
                        });
                    }
                    else
                    {
                        itemI.Cantidad += itemC.Cantidad;
                    }
                }
                model.Grupos = GroupsXml
                               .Select(p => new GrupoDifferenceViewModel
                {
                    GroupID = p.GroupID,
                    Tipos   = p.Types.Select(q => new TipoDifferenceViewModel
                    {
                        TypeID = q.TypeID,
                        Items  = q.Items.Select(r => new ItemDifferenceViewModel
                        {
                            CurrentItem      = r,
                            CantidadUsuarioA = inventarioA.SingleOrDefault(s => s.ItemID == r.ItemID) == null ? 0 : inventarioA.Single(s => s.ItemID == r.ItemID).Cantidad,
                            CantidadUsuarioB = inventarioB.SingleOrDefault(s => s.ItemID == r.ItemID) == null ? 0 : inventarioB.Single(s => s.ItemID == r.ItemID).Cantidad
                        })
                    })
                }).ToList();

                return(View(model));
            }
        }
コード例 #8
0
        public ActionResult DifferenceData()
        {
            if (Username != "*****@*****.**" && Username != "*****@*****.**")
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Invalid user."));
            }

            DifferenceViewModel model = new DifferenceViewModel();
            string userIdA            = Username;
            string userIdB            = (Username == "*****@*****.**" ? "*****@*****.**" : "*****@*****.**");

            model.OrigUserId = MyInventory.Utils.GetUsernamFromEmail(userIdA);
            model.DestUserId = MyInventory.Utils.GetUsernamFromEmail(userIdB);

            var inventoryA = Database.InventoriesItems
                             .Where(s => s.Inventories.UserId == userIdA)
                             .Select(u => new ItemQuantity {
                ItemId = u.ItemId, Quantity = u.Quantity
            }).ToList();
            var inventoryB = Database.InventoriesItems
                             .Where(s => s.Inventories.UserId == userIdB)
                             .Select(u => new ItemQuantity {
                ItemId = u.ItemId, Quantity = u.Quantity
            }).ToList();

            var capsulesA = Database.CapsulesItems
                            .Where(s => s.Capsules.UserId == userIdA)
                            .GroupBy(t => t.ItemId)
                            .Select(u => new ItemQuantity {
                ItemId = u.Key, Quantity = u.Sum(v => v.Quantity)
            });
            var capsulesB = Database.CapsulesItems
                            .Where(s => s.Capsules.UserId == userIdB)
                            .GroupBy(t => t.ItemId)
                            .Select(u => new ItemQuantity {
                ItemId = u.Key, Quantity = u.Sum(v => v.Quantity)
            });

            foreach (var itemC in capsulesA)
            {
                var itemI = inventoryA.SingleOrDefault(f => f.ItemId == itemC.ItemId);
                if (itemI == null)
                {
                    inventoryA.Add(new ItemQuantity {
                        ItemId = itemC.ItemId, Quantity = itemC.Quantity
                    });
                }
                else
                {
                    itemI.Quantity += itemC.Quantity;
                }
            }

            foreach (var itemC in capsulesB)
            {
                var itemI = inventoryB.SingleOrDefault(f => f.ItemId == itemC.ItemId);
                if (itemI == null)
                {
                    inventoryB.Add(new ItemQuantity {
                        ItemId = itemC.ItemId, Quantity = itemC.Quantity
                    });
                }
                else
                {
                    itemI.Quantity += itemC.Quantity;
                }
            }

            model.Groups = GroupsXml
                           .Select(p => new GroupDifferenceViewModel {
                GroupId = p.GroupId,
                Types   = p.Types.Select(q => new TypeDifferenceViewModel {
                    TypeId = q.TypeId,
                    Items  = q.Items.Select(r => new ItemDifferenceViewModel {
                        CurrentItem  = ItemBase.Create(r),
                        OrigQuantity = inventoryA.SingleOrDefault(s => s.ItemId == r.ItemId) == null ? 0 : inventoryA.Single(s => s.ItemId == r.ItemId).Quantity,
                        DestQuantity = inventoryB.SingleOrDefault(s => s.ItemId == r.ItemId) == null ? 0 : inventoryB.Single(s => s.ItemId == r.ItemId).Quantity
                    }).ToList()
                }).ToList()
            }).ToList();

            model.Groups.RemoveAll(p => p.OrigDifference == 0 && p.DestDifference == 0);
            foreach (var group in model.Groups)
            {
                group.Types.RemoveAll(p => p.OrigDifference == 0 && p.DestDifference == 0);
                foreach (var type in group.Types)
                {
                    type.Items.RemoveAll(p => p.OrigDifference == 0 && p.DestDifference == 0);
                }
            }

            return(Json(model, JsonRequestBehavior.AllowGet));
        }