public InventoryItemDto Parse(string data)
        {
            InventoryItemDto result = null;

            if (string.IsNullOrWhiteSpace(data))
            {
                return(result);
            }

            var match = _regex.Match(data);

            if (match.Success)
            {
                result      = new InventoryItemDto();
                result.Name = match.Groups["name"].Value;
                result.Id   = match.Groups["id"].Value;

                var availabilities = match.Groups["availability"].Captures;
                for (int i = 0; i < availabilities.Count; i++)
                {
                    var availabilityMatch = _availability.Match(availabilities[i].Value);
                    if (availabilityMatch.Success)
                    {
                        var availabilityDto = new AvailabilityDto
                        {
                            WarehouseId = availabilityMatch.Groups["warehouse"].Value,
                            Quantity    = int.Parse(availabilityMatch.Groups["quantity"].Value)
                        };
                        result.Availabilities.Add(availabilityDto);
                    }
                }
            }

            return(result);
        }
        public Dictionary <DayOfWeek, List <AvailabilityDto> > Resolve(MemberProfile domain, TDto dto, Dictionary <DayOfWeek, List <AvailabilityDto> > destMember, ResolutionContext context)
        {
            var availabilities = new Dictionary <DayOfWeek, List <AvailabilityDto> >();

            foreach (var day in Enum.GetValues(typeof(DayOfWeek)))
            {
                availabilities.Add((DayOfWeek)day, new List <AvailabilityDto>());
            }

            if (domain.Availabilities != null)
            {
                foreach (var availbility in domain.Availabilities)
                {
                    var availDto = new AvailabilityDto
                    {
                        AvailableDay = availbility.AvailableDay,
                        StartTime    = availbility.StartTime,
                        EndTime      = availbility.EndTime,
                        IsModified   = true
                    };

                    availabilities[availbility.AvailableDay].Add(availDto);
                }
            }

            return(availabilities);
        }
        public static HotelAvailability Map(AvailabilityDto dto, int nights)
        {
            var result = new HotelAvailability
            {
                Hotel = new HotelInfo
                {
                    Name   = dto?.Hotel?.Name,
                    Rating = dto?.Hotel?.Rating ?? 0
                }
            };

            result.Rates = new List <HotelRate>();

            if (dto.Rates != null)
            {
                foreach (var rateDto in dto.Rates)
                {
                    var rate = new HotelRate();

                    switch (rateDto.BoardType)
                    {
                    case "No Meals":
                        rate.BoardType = Core.Common.Enum.BoardType.NoMeals;
                        break;

                    case "Half Board":
                        rate.BoardType = Core.Common.Enum.BoardType.HalfBoard;
                        break;

                    case "Full Board":
                        rate.BoardType = Core.Common.Enum.BoardType.FullBoard;
                        break;
                    }

                    rate.RateType = rateDto.RateType == "PerNight" ? Core.Common.Enum.HotelRateType.PerNight : Core.Common.Enum.HotelRateType.Stay;

                    rate.FinalPrice = rate.RateType == Core.Common.Enum.HotelRateType.PerNight
                                        ? rateDto.Value * nights
                                        : rateDto.Value;

                    result.Rates.Add(rate);
                }
            }

            return(result);
        }
Beispiel #4
0
 public AvailabilityDtoBuilder()
 {
     _availabilityDto = WithDefaults();
 }