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()))); }
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" })); }
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); }
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]"); }