public async void Share([FromHeader] string auth, [FromForm] string uid, [FromForm] string friend)
        {
            string user;

            if ((user = JwtBuilder.UserJwtToken(auth).Result) == null || !UserStore.Exists(user).Result)
            {
                HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                return;
            }

            HttpContext.Response.Headers.Add("auth", auth);
            if (!InventoryStore.Exists(uid, user).Result || !UserStore.Exists(friend).Result)
            {
                HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
                return;
            }

            await InventoryStore.Share(uid, user, friend);
        }
        public async void AddProduct([FromHeader] string auth, [FromForm] string product, [FromForm] int quantity,
                                     [FromForm] string uid, [FromForm] DateTime expire)
        {
            string user;

            if ((user = JwtBuilder.UserJwtToken(auth).Result) == null || !UserStore.Exists(user).Result)
            {
                HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                return;
            }

            HttpContext.Response.Headers.Add("auth", auth);
            if (!ProductStore.Exists(product).Result || !InventoryStore.Exists(uid, user).Result)
            {
                HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
                return;
            }

            await InventoryStore.Add_prod(uid, product, quantity, expire, user);
        }
        public async void EditProduct([FromHeader] string auth, [FromForm] string product,
                                      [FromForm] string uid, [FromForm] DateTime?expire = null, [FromForm] long?quantity = null)
        {
            string user;

            if ((user = JwtBuilder.UserJwtToken(auth).Result) == null || !UserStore.Exists(user).Result)
            {
                HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                return;
            }

            HttpContext.Response.Headers.Add("auth", auth);
            if (!ProductStore.Exists(product).Result || !InventoryStore.Exists(uid, user).Result)
            {
                HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
                return;
            }

            var date = expire != null ? new LocalDateTime((DateTime)expire) : null;
            await InventoryStore.Restock(uid, product, user, quantity, date);
        }