Ejemplo n.º 1
0
        public async Task <ActionResult <IEnumerable <MemberLabelDescription> > > GetMemberLabels()
        {
            var enumList = EnumDescriptionHelper.GetEnumDescriptions <MemberLabel>();

            return(Ok(await Task.FromResult(enumList.Select(e => new MemberLabelDescription {
                Code = e.value, Description = e.description
            }).ToArray())));
        }
Ejemplo n.º 2
0
 public ActionResult <IEnumerable <Code> > GetCodes(string forEnumType)
 {
     if (!string.IsNullOrEmpty(forEnumType))
     {
         var type = Assembly.GetExecutingAssembly().ExportedTypes.Where(t => t.Name.Equals(forEnumType, StringComparison.OrdinalIgnoreCase) && t.IsEnum).FirstOrDefault();
         if (type == null)
         {
             return(NotFound(forEnumType));
         }
         var values = EnumDescriptionHelper.GetEnumDescriptions(type);
         return(Ok(values.Select(e => new Code {
             Type = type.Name, Value = e.Value, Description = e.Description
         }).ToArray()));
     }
     return(BadRequest(new ProblemDetails {
         Detail = "empty query parameter"
     }));
 }
Ejemplo n.º 3
0
        public MarsRoversResource CalculateRoversPosition(MarsRoversModel model)
        {
            var result = new MarsRoversResource();
            var rovers = new Dictionary <int, Rover>();

            var directions = EnumDescriptionHelper.GetEnumDescriptions <Direction>().ToList();
            var commands   = EnumDescriptionHelper.GetEnumDescriptions <RoverCommand>().ToList();

            var index = 0;

            try
            {
                // InitializeRovers
                foreach (var roverModel in model.Rovers)
                {
                    index++;
                    rovers.Add(index, InitializeRover(index, roverModel, directions, commands));
                }
                ;

                // Validate starting positions
                foreach (var rover in rovers)
                {
                    PositionValidator.ValidatePosition(rover.Value, rover.Value.CurrentPosition, rovers, model.PlateauX, model.PlateauY, true);
                }

                // ProcessRovers
                var deployedRovers = rovers.Where(x => x.Value.Deployed).ToDictionary(x => x.Key, x => x.Value);;
                foreach (var rover in deployedRovers)
                {
                    ProcessRoverCommands(rover.Value, deployedRovers, model.PlateauX, model.PlateauY);
                }

                // Map results
                result = MapRoversToResource(rovers);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                throw;
            }

            return(result);
        }
Ejemplo n.º 4
0
        public RoverProgramValidator()
        {
            RuleFor(p => p.InitialX)
            .FieldGreaterThanOrEqualTo(0);

            RuleFor(p => p.InitialY)
            .FieldGreaterThanOrEqualTo(0);

            RuleFor(p => p.InitialDirection)
            .NotNull()
            .NotEmpty()
            .FieldLength(1)
            .Must(p => EnumDescriptionHelper.GetEnumDescriptions <Direction>().Contains(p.ToUpper()))
            .WithMessage($"{nameof(RoverProgramModel.InitialDirection)} should be one of the following values: [N - North, E - East, S - South, W - West]");

            RuleForEach(p => p.Commands)
            .Must(p => EnumDescriptionHelper.GetEnumDescriptions <RoverCommand>().Contains(p.ToString().ToUpper()))
            .When(p => !string.IsNullOrEmpty(p.Commands))
            .WithMessage($"{nameof(RoverProgramModel.Commands)} should consist of the following values: [M - Move, L - Left, R - Right]");
        }