public async Task <ModelApiResponse> Delete([FromQuery] int?id, string token)
        {
            ModelApiResponse modelApiResponse = new ModelApiResponse();

            try
            {
                using (var context = new ApplicationDbContext())
                {
                    var product = await(from a in context.BondoraCart
                                        where a.Token == token && a.InventoryId == id
                                        select a).FirstOrDefaultAsync();
                    if (product != null)
                    {
                        context.BondoraCart.Remove(product);
                        await context.SaveChangesAsync();

                        modelApiResponse.Success = true;
                    }
                    else
                    {
                        modelApiResponse.Success = false;
                        modelApiResponse.Message = localizer["NotFound"].Value;
                    }
                }
            }
            catch (Exception ex)
            {
                modelApiResponse.Success = false;
                modelApiResponse.Message = ex.Message + "<br />" + ex.InnerException + "<br />" + ex.StackTrace;
            }
            return(modelApiResponse);
        }
        public async Task <ModelApiResponse> Post([FromBody] ModelOrder param)
        {
            ModelApiResponse modelApiResponse = new ModelApiResponse();

            try
            {
                if (param != null)
                {
                    using (var context = new ApplicationDbContext())
                    {
                        var newItem = new BondoraOrder();
                        newItem.CustomerId           = param.CustomerId;
                        newItem.DateOrder            = DateTime.Now;
                        newItem.Token                = param.Token;
                        context.Entry(newItem).State = EntityState.Added;
                        await context.SaveChangesAsync();

                        modelApiResponse.Success      = true;
                        modelApiResponse.Message      = "";
                        modelApiResponse.CountOrdered = 0;
                    }
                }
                else
                {
                    modelApiResponse.Success      = false;
                    modelApiResponse.Message      = localizer["NoItemsToSubmit"].Value;
                    modelApiResponse.CountOrdered = 0;
                }
            }
            catch (Exception ex)
            {
                modelApiResponse.Success      = false;
                modelApiResponse.Message      = ex.Message + "<br />" + ex.InnerException + "<br />" + ex.StackTrace;
                modelApiResponse.CountOrdered = 0;
            }
            return(modelApiResponse);
        }
        public async Task <ModelApiResponse> Post([FromBody] ModelAddToCart param)
        {
            ModelApiResponse modelApiResponse = new ModelApiResponse();

            try
            {
                using (var context = new ApplicationDbContext())
                {
                    if (param != null)
                    {
                        if (param.InventoryId != 0)
                        {
                            //if product has been already found in cart
                            var dataUnique = await(from a in context.BondoraCart
                                                   where a.InventoryId == param.InventoryId && a.Token == param.Token
                                                   select a).FirstOrDefaultAsync();
                            if (dataUnique == null)
                            {
                                //insert new one
                                var newItem = new BondoraCart();
                                newItem.Days                 = param.Numdays;
                                newItem.InventoryId          = param.InventoryId;
                                newItem.Token                = param.Token;
                                context.Entry(newItem).State = EntityState.Added;
                                await context.SaveChangesAsync();
                            }
                            else
                            {
                                dataUnique.Days += param.Numdays;
                                context.Entry(dataUnique).State = EntityState.Modified;
                                await context.SaveChangesAsync();
                            }

                            var countOrdered = await(from a in context.BondoraCart
                                                     where a.Token == param.Token
                                                     select a).CountAsync();

                            modelApiResponse.Success      = true;
                            modelApiResponse.Message      = (localizer != null) ? localizer["AddedToCard"].Value : "";
                            modelApiResponse.CountOrdered = countOrdered;
                        }
                        else
                        {
                            modelApiResponse.Success = false;
                            modelApiResponse.Message = localizer["AddedToCard"].Value;
                        }
                    }
                    else
                    {
                        modelApiResponse.Success = false;
                        modelApiResponse.Message = localizer["NoItemsToSubmit"].Value;
                    }
                }
            }
            catch (Exception ex)
            {
                modelApiResponse.Success = false;
                modelApiResponse.Message = ex.Message + "<br />" + ex.InnerException + "<br />" + ex.StackTrace;
            }
            return(modelApiResponse);
        }