コード例 #1
0
        public void Deserialize_CustomFood_FullDetails()
        {
            const string serialized = "CustomFoods:" + "\r\n" +
                                      "(" + "\r\n" +
                                      "    ItemID:verybigwater;" + "\r\n" +
                                      "    DisplayName:\"Very Big Water\";" + "\r\n" +
                                      "    Tooltip:\"A very Big Water\";" + "\r\n" +
                                      "    AmountCrafted:0;" + "\r\n" +
                                      "    Ingredients:" + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:filteredwater;" + "\r\n" +
                                      "            Required:5;" + "\r\n" +
                                      "        );" + "\r\n" +
                                      "    Path:Fabricator;" + "\r\n" +
                                      "    FoodValue:0;" + "\r\n" +
                                      "    WaterValue:100;" + "\r\n" +
                                      ");" + "\r\n";

            var food = new CustomFood();

            food.FromString(serialized);

            //Assert.AreEqual(TechType.Aerogel.ToString(), food.ItemID);
            Assert.AreEqual(0, food.FoodValue);
            Assert.AreEqual(100, food.WaterValue);
        }
コード例 #2
0
        public async Task <CommandResult> Handle(UpdateFoodCommand request, CancellationToken cancellationToken)
        {
            CustomFood customFood = await _foodRepository.GetCustomByIdAsync(request.FoodId, _currentProfileId);

            if (customFood == null)
            {
                return(FailureDueToCustomFoodNotFound());
            }

            CustomFoodTable customFoodTable = await _foodTableRepository.GetCustomByIdAsync(request.FoodTableId, _currentProfileId);

            if (customFoodTable == null)
            {
                return(FailureDueToCustomFoodTableNotFound());
            }

            customFood.Update(
                request.Name,
                request.Description,
                request.FoodTableId,
                _mapper.Map <MacronutrientTable>(request.Macronutrients),
                _mapper.Map <MicronutrientTable>(request.Micronutrients),
                new FoodUnit(request.UnitType, request.DefaultGramsQuantityMultiplier)
                );

            await _foodRepository.UpdateAsync(customFood);

            return(await CommitAndPublishDefaultAsync());
        }
コード例 #3
0
        public async Task <IActionResult> PutCustomFood(string id, CustomFood customFood)
        {
            if (id != customFood.Id)
            {
                return(BadRequest());
            }

            _context.Entry(customFood).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CustomFoodExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
コード例 #4
0
        public async Task <CommandResult> Handle(RemoveFoodCommand request, CancellationToken cancellationToken)
        {
            CustomFood food = await _foodRepository.GetCustomByIdAsync(request.FoodId, _currentProfileId);

            if (food == null)
            {
                return(FailureDueToCustomFoodNotFound());
            }

            await _foodRepository.RemoveAsync(food);

            return(await CommitAndPublishDefaultAsync());
        }
コード例 #5
0
        public async Task <IActionResult> OnPostAddCustomFoodAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            CustomFood.Id = CustomFood.GenerateId(CustomFood.Name);

            _context.CustomFoods.Add(CustomFood);
            await _context.SaveChangesAsync();

            return(RedirectToPage("/Dashboard"));
        }
コード例 #6
0
        public async Task <ActionResult <CustomFood> > PostCustomFood([FromBody] CustomFood customFood)
        {
            if (CustomFoodExists(customFood.Id) == false)
            {
                _context.CustomFoods.Add(customFood);
                await _context.SaveChangesAsync();

                return(CreatedAtAction("GetCustomFood", new { id = customFood.Id }, customFood));
            }
            else
            {
                return(null);
            }
        }
コード例 #7
0
        public async Task <ActionResult <IEnumerable <CustomFood> > > SearchFood()
        {
            string term          = HttpContext.Request.Query["term"].ToString();
            string offset_string = HttpContext.Request.Query["offset"].ToString();
            string max_string    = HttpContext.Request.Query["max"].ToString();
            int    max           = 10;
            int    offset        = 0;

            if (offset_string != "")
            {
                Int32.TryParse(HttpContext.Request.Query["offset"].ToString(), out offset);
            }
            if (max_string != "")
            {
                Int32.TryParse(HttpContext.Request.Query["max"].ToString(), out max);
            }

            //food names that start with the search term should appear first
            List <CustomFood> result = await _context.CustomFoods.Where(p => p.Name.ToLower().StartsWith(term.ToLower())).ToListAsync();

            //next comes words that start with the search term, but aren't at the start of the food name
            result.AddRange(await _context.CustomFoods.Where(p => p.Name.ToLower().Contains(' ' + term.ToLower())).ToListAsync());
            //then everything else
            result.AddRange(await _context.CustomFoods.Where(p => p.Name.ToLower().Contains(term.ToLower())).ToListAsync());
            result.AddRange(await _context.CustomFoods.Where(p => p.Name.ToLower().Replace("-", "").Replace(" ", "").Contains(term.ToLower().Replace(" ", ""))).ToListAsync());

            //remove duplicates
            result = result.Distinct().ToList();

            int max_count = result.Count();

            List <CustomFood> customFoods = result.Skip(offset).Take(max).ToList();

            if (customFoods.Count < max_count)
            {
                CustomFood more = new CustomFood();
                more.Id   = "0";
                more.Name = "(Showing " + customFoods.Count.ToString() + " of " + max_count.ToString() + ")  More...";
                customFoods.Add(more);
            }

            return(customFoods);
        }
コード例 #8
0
        private float getCustomFoodValue(CustomFood f, int i)
        {
            switch (i)
            {
            case 0: return(f.Water);

            case 1: return(f.Enegry);

            case 2: return(f.EnegryNIP);

            case 3: return(f.Protein);

            case 4: return(f.Fat);

            case 5: return(f.Carbohydrates);

            case 6: return(f.DietaryFibre);

            case 7: return(f.Sugars);

            case 8: return(f.Starch);

            case 9: return(f.SFA);

            case 10: return(f.MUFA);

            case 11: return(f.PUFA);

            case 12: return(f.AlphaLinolenicAcid);

            case 13: return(f.LinoleicAcid);

            case 14: return(f.Cholesterol);

            case 15: return(f.Sodium);

            case 16: return(f.Iodine);

            case 17: return(f.Potassium);

            case 18: return(f.Phosphorus);

            case 19: return(f.Calcium);

            case 20: return(f.Iron);

            case 21: return(f.Zinc);

            case 22: return(f.Selenium);

            case 23: return(f.VitaminA);

            case 24: return(f.BetaCarotene);

            case 25: return(f.Thiamin);

            case 26: return(f.Riboflavin);

            case 27: return(f.Niacin);

            case 28: return(f.VitaminB6);

            case 29: return(f.VitaminB12);

            case 30: return(f.DietaryFolate);

            case 31: return(f.VitaminC);

            case 32: return(f.VitaminD);

            case 33: return(f.VitaminE);

            default: return(0);
            }
        }
コード例 #9
0
 public CustomFoodPrefab(CustomFood customFood)
     : base(customFood.ItemID, $"{customFood.ItemID}Prefab", customFood.TechType)
 {
     FoodEntry = customFood;
 }
コード例 #10
0
        public async Task <IActionResult> GetCustomByIdAsync(Guid id)
        {
            CustomFood customFood = await _foodRepository.GetCustomByIdAsync(id, _currentProfileId);

            return(CreateResponse(customFood));
        }