public async Task <bool> GenerateChildNodes(int factoryId, GenerationRequestModel generationRequest)
        {
            if (generationRequest.NumberOfChildren > 15 || generationRequest.NumberOfChildren <= 0 || generationRequest.UpperLimit < generationRequest.LowerLimit)
            {
                return(false);
            }

            var factory = await _treeChallengeDbContext.Factory.Where(g => g.Id == factoryId).FirstOrDefaultAsync();

            if (factory == null)
            {
                return(false);
            }

            try
            {
                var children = _treeChallengeDbContext.ChildNode.Where(g => g.FactoryId == factoryId);
                _treeChallengeDbContext.ChildNode.RemoveRange(children);

                for (int i = 0; i < generationRequest.NumberOfChildren; i++)
                {
                    Random rnd = new Random();
                    int    num = rnd.Next(generationRequest.LowerLimit, generationRequest.UpperLimit + 1);
                    _treeChallengeDbContext.ChildNode.Add(new ChildNodeModel {
                        FactoryId = factoryId, Name = num.ToString()
                    });
                }

                return(await _treeChallengeDbContext.SaveChangesAsync() > 0);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
Beispiel #2
0
        public async Task <IActionResult> GenerateChildNodes(int factoryId, [FromBody] GenerationRequestModel generationRequest)
        {
            var saveResult = await _factoryService.GenerateChildNodes(factoryId, generationRequest);

            if (saveResult)
            {
                await _hubContext.Clients.All.SendAsync("ListChanged", factoryId);
            }

            return(StatusCode(200, saveResult));
        }