public async static Task category(TempDataDictionary TempData, long categoryId)
            {
                // remove from database
                using (FM_Datastore_Entities_EF db_manager = new FM_Datastore_Entities_EF())
                {
                    Category category = db_manager.Categories.FirstOrDefault(m => m.Id == categoryId);
                    if (category != null)
                    {
                        db_manager.Categories.Remove(category);
                        await db_manager.SaveChangesAsync();
                    }
                }
                // remove from session
                List <Category> categories;

                Load.categories(TempData, out categories);
                Category tmpCategory = categories.FirstOrDefault(m => m.Id == categoryId);

                if (tmpCategory != null)
                {
                    categories.Remove(tmpCategory);
                }

                // remove from session combobox
                List <SelectListItem> comboboxItems;

                Load.categoriesCombobox(TempData, out comboboxItems);
                SelectListItem tmpCBI = comboboxItems.FirstOrDefault(m => m.Value == categoryId.ToString());

                if (tmpCBI != null)
                {
                    categories.Remove(tmpCategory);
                }
            }
            public async static Task product(TempDataDictionary TempData, long productId)
            {
                // remove from database
                using (FM_Datastore_Entities_EF db_manager = new FM_Datastore_Entities_EF())
                {
                    Product product = db_manager.Products.Include(AppSettings.Includes.Category).FirstOrDefault(m => m.Id == productId);
                    if (product != null)
                    {
                        db_manager.Products.Remove(product);
                        await db_manager.SaveChangesAsync();
                    }
                }

                // remove from session
                List <Product> products;

                Load.products(TempData, out products);
                Product tmpProd = products.FirstOrDefault(m => m.Id == productId);

                if (tmpProd != null)
                {
                    products.Remove(tmpProd);
                }

                // remove from session combobox
                List <SelectListItem> comboboxItems;

                Load.productsCombobox(TempData, out comboboxItems);
                SelectListItem tmpCBI = comboboxItems.FirstOrDefault(m => m.Value == productId.ToString());

                if (tmpCBI != null)
                {
                    products.Remove(tmpProd);
                }
            }
            public async static Task <Category> category(TempDataDictionary TempData, Category category)
            {
                // add to database
                using (FM_Datastore_Entities_EF db_manager = new FM_Datastore_Entities_EF())
                {
                    category = db_manager.Categories.Add(category);
                    await db_manager.SaveChangesAsync();
                }

                // add to session
                List <Category> categories;

                if (!Load.categories(TempData, out categories))
                {
                    categories.Add(category);
                }

                // add to session combobox
                List <SelectListItem> comboboxItems;

                if (!Load.categoriesCombobox(TempData, out comboboxItems))
                {
                    comboboxItems.Add(new SelectListItem()
                    {
                        Text  = category.name,
                        Value = category.Id.ToString()
                    });
                }

                return(category);
            }
            public async static Task <bool> category(TempDataDictionary TempData, long categoryId, long[] productLinkCatId)
            {
                // remove from database
                using (FM_Datastore_Entities_EF db_manager = new FM_Datastore_Entities_EF())
                {
                    Category category = db_manager.Categories.FirstOrDefault(m => m.Id == categoryId);
                    if (category != null)
                    {
                        List <Product> prod = category.Products.ToList();
                        Category       categoryDef;
                        long           tmpCat;
                        // remove products from categories
                        for (int i = 0; i < prod.Count; i++)
                        {
                            tmpCat             = productLinkCatId[i];
                            categoryDef        = db_manager.Categories.FirstOrDefault(m => m.Id == tmpCat);
                            prod[i].categoryId = (long)productLinkCatId[i];
                            prod[i].Category   = categoryDef;

                            Update.product(TempData, prod[i]);
                        }

                        db_manager.Categories.Remove(category);
                        await db_manager.SaveChangesAsync();
                    }
                }

                // remove from session
                List <Category> categories;

                Load.categories(TempData, out categories);
                Category tmpCategory = categories.FirstOrDefault(m => m.Id == categoryId);

                if (tmpCategory != null)
                {
                    categories.Remove(tmpCategory);
                }

                // remove from session combobox
                List <SelectListItem> comboboxItems;

                Load.categoriesCombobox(TempData, out comboboxItems);
                SelectListItem tmpCBI = comboboxItems.FirstOrDefault(m => m.Value == categoryId.ToString());

                if (tmpCBI != null)
                {
                    categories.Remove(tmpCategory);
                }
                return(true);
            }
            public async static Task product(TempDataDictionary TempData, HttpSessionStateBase Session, long productId, long[] transactionLinkProdId)
            {
                // remove from database
                using (FM_Datastore_Entities_EF db_manager = new FM_Datastore_Entities_EF())
                {
                    Product product = db_manager.Products.FirstOrDefault(m => m.Id == productId);
                    if (product != null)
                    {
                        // remove transactions from products
                        List <Transaction> trans = product.Transactions.ToList();
                        Product            productDef;
                        long tmp;
                        // remove transactions from products
                        for (int i = 0; i < trans.Count; i++)
                        {
                            tmp                = transactionLinkProdId[i];
                            productDef         = db_manager.Products.FirstOrDefault(m => m.Id == tmp);
                            trans[i].productId = transactionLinkProdId[i];
                            trans[i].Product   = productDef;

                            Update.transaction(Session, trans[i]);
                        }

                        db_manager.Products.Remove(product);
                        await db_manager.SaveChangesAsync();
                    }
                }

                // remove from session
                List <Product> products;

                Load.products(TempData, out products);
                Product tmpProd = products.FirstOrDefault(m => m.Id == productId);

                if (tmpProd != null)
                {
                    products.Remove(tmpProd);
                }

                // remove from session combobox
                List <SelectListItem> comboboxItems;

                Load.productsCombobox(TempData, out comboboxItems);
                SelectListItem tmpCBI = comboboxItems.FirstOrDefault(m => m.Value == productId.ToString());

                if (tmpCBI != null)
                {
                    products.Remove(tmpProd);
                }
            }
            public async static Task <Product> product(TempDataDictionary TempData, Product product)
            {
                // add to database
                using (FM_Datastore_Entities_EF db_manager = new FM_Datastore_Entities_EF())
                {
                    if (product.Category == null)
                    {
                        product.Category = db_manager.Categories.FirstOrDefault(m => m.Id == product.categoryId);
                    }

                    product = db_manager.Products.Add(product);
                    await db_manager.SaveChangesAsync();
                }

                // add to session
                List <Product> products;

                if (!Load.products(TempData, out products))
                {
                    products.Add(product);
                }

                // add to session combobox
                List <SelectListItem> comboboxItems;

                if (!Load.productsCombobox(TempData, out comboboxItems))
                {
                    comboboxItems.Add(new SelectListItem()
                    {
                        Text  = product.name,
                        Value = product.Id.ToString()
                    });
                }

                return(product);
            }