public async Task <AddConnectorResponseDto> Handle(AddConnectorCommand request,
                                                           CancellationToken cancellationToken)
        {
            var group = await GetGroup(request.GroupId, cancellationToken);

            var connectors = await GetGroupConnectors(request.GroupId, cancellationToken);

            //if exceeds capacity
            if (ExceedsGroupCapacity(connectors, request.MaxCurrent, group.Capacity))
            {
                var combinations = CombinationsCalculator.GetCombinations(connectors, request.MaxCurrent);
                return(new AddConnectorResponseDto
                {
                    Suggestions = GetConnectorsToBeRemove(combinations)
                });
            }

            //TODO:if exceeds the max number of connectors per station

            //if can add new connector
            var connector = new Connector
            {
                ChargeStationId = request.ChargeStationId,
                MaxCurrent      = request.MaxCurrent,
                Id = GetConnectorAvailableId(connectors, request.ChargeStationId)
            };

            _context.Connectors.Add(connector);
            await _context.SaveChangesAsync(cancellationToken);

            return(new AddConnectorResponseDto
            {
                NewConnectorId = connector.Id
            });
        }
示例#2
0
        public async Task <UpdateConnectorResponseDto> Handle(UpdateConnectorCommand request,
                                                              CancellationToken cancellationToken)
        {
            var connector = await _context.Connectors.FindAsync(
                new object[] { request.ConnectorId, request.ChargeStationId }, cancellationToken);

            var group = await GetGroup(request.GroupId, cancellationToken);

            var connectors = await GetGroupConnectors(request.GroupId, cancellationToken);

            //if exceeds capacity
            if (ExceedsGroupCapacity(connectors, request.MaxCurrent, group.Capacity))
            {
                var combinations = CombinationsCalculator.GetCombinations(connectors, request.MaxCurrent);
                return(new UpdateConnectorResponseDto
                {
                    Suggestions = GetConnectorsToBeRemove(combinations)
                });
            }

            connector.MaxCurrent = request.MaxCurrent;

            await _context.SaveChangesAsync(cancellationToken);

            return(new UpdateConnectorResponseDto());
        }
示例#3
0
        static void Main()
        {
            IConfigurationRoot configuration = LoadConfiguration();

            var combinationsDatasource = configuration.GetSection("CombinationsDatasource").Value;
            var repository             = new CombinationRepository()
            {
                DataSource = combinationsDatasource
            };
            var combinations           = repository.GetCombinations();
            var combinationsCalculator = new CombinationsCalculator();
            var combination            = combinationsCalculator.GetCombinationWithMostCommonNumbers(combinations);

            Console.WriteLine($"Columns: {combination.Columns.ToSortedString()}");
            Console.WriteLine($"Stars: {combination.Stars.ToSortedString()}");

            Console.ReadLine();
        }
        public IActionResult Index(CombinationsCalculator model)
        {
            SetViewBagValues();

            if (!ModelState.IsValid)
            {
                return(View());
            }

            if (model.NumberOfObjects < model.SampleSize || model.NumberOfObjects < 0)
            {
                model.Result = 0;
            }
            else
            {
                model.Result = model.CalculateResult();
            }

            return(View(model));
        }
示例#5
0
 public void Setup()
 {
     sut = new CombinationsCalculator();
 }