public Task <IActionResult> CommitOrderFor(SneakerReference reference)
 {
     if (reference is null)
     {
         throw new ArgumentException(nameof(reference));
     }
     return(CommitOrder(reference.UniqueID));
 }
Beispiel #2
0
        public List <SneakerReference> GetRelated(SneakerReference reference, RequestParams requestParams = default)
        {
            var requiredCount = requestParams?.Limit ?? 5;
            var query         = _builder
                                .Reset()
                                .SetQueryArguments("brandname", ExpressionType.And, new FilterParameter(reference.BrandName))
                                .SetQueryArguments("modelname", ExpressionType.And, new FilterParameter(reference.ModelName, ExpressionType.Regex))
                                .Build();

            if (requestParams?.Limit != null)
            {
                requestParams.Limit++;                                           // later -1 current reference
            }
            var related = Fetch(query, requestParams);

            if ((related is null || related.Count < requiredCount) && reference.BaseModel != null)
            {
                query = _builder
                        .Reset()
                        .SetQueryArguments("brandname", ExpressionType.And, new FilterParameter(reference.BrandName))
                        .SetQueryArguments("modelname", ExpressionType.And, new FilterParameter(reference.BaseModel?.Name, ExpressionType.Regex))
                        .Build();
                var lessRelated = Fetch(query, new RequestParams {
                    Limit = 100
                });
                if (lessRelated != null && lessRelated.Any())
                {
                    lessRelated = lessRelated.OrderBySimilarity(r => r.ModelName, reference.ModelName)
                                  .Where(r => r.UniqueID != reference.UniqueID)
                                  .ToList();
                    related = (related?.Union(lessRelated) ?? lessRelated).ToList();
                }
            }

            if (related != null && related.Count < requiredCount && reference.Brand != null && _cachedSneakers.IsCompleted && _cachedSneakers.Result != null)
            {
                var brandRelated = _cachedSneakers.Result.Where(r => r.BrandName == reference.BrandName).ToList();
                if (brandRelated.Any())
                {
                    brandRelated = brandRelated.OrderBySimilarity(r => r.ModelName, reference.ModelName)
                                   .Where(r => r.UniqueID != reference.UniqueID)
                                   .ToList();
                    related = related.Union(brandRelated).ToList();
                }
            }

            return(related?
                   .Where(r => r.UniqueID != reference.UniqueID)
                   .Distinct(new EntityComparer <SneakerReference>())
                   .Take(requiredCount).ToList());
        }
 public static Proto.SneakerReference FromNative(this SneakerReference native)
 {
     return(new Proto.SneakerReference
     {
         UniqueId = native.UniqueID,
         ManufactureSku = native.ManufactureSku,
         BrandName = native.BrandName,
         ModelName = native.ModelName,
         BaseModelName = native.BaseModelName,
         Description = native.Description,
         Color = native.Color,
         Gender = native.Gender.GetEnumMemberValue(),
         Nickname = native.Nickname,
         Materials = { native.Materials },
         Categories = { native.Categories },
         ReleaseDate = native.ReleaseDate.ToTimestamp(),
         ReleaseDateStr = native.ReleaseDateSTR,
         Price = Convert.ToDouble(native.Price),
         ImageLink = native.ImageLink,
         ImageLinks = { native.ImageLinks },
         StadiumUrl = native.StadiumUrl,
         GoatUrl = native.GoatUrl,
     });
 }
 public PatchSneakerReferenceRequest(SneakerReference sneakerReference) : base(string.Empty, Method.PATCH)
 {
     AddJsonBody(sneakerReference);
 }
Beispiel #5
0
 public Task <bool> ModifyAsync(SneakerReference sneakerReference, RequestParams requestParams = default) => _repository.UpdateAsync(sneakerReference, requestParams);
Beispiel #6
0
 public Task <SneakerReference> StoreAsync(SneakerReference sneakerReference, RequestParams requestParams = default) => _repository.PostAsync(sneakerReference, requestParams);
Beispiel #7
0
 public bool Modify(SneakerReference sneakerReference, RequestParams requestParams = default) => _repository.Update(sneakerReference, requestParams);
Beispiel #8
0
 public SneakerReference Store(SneakerReference sneakerReference, RequestParams requestParams = default) => _repository.Post(sneakerReference, requestParams);
 public PostSneakerReferenceRequest(SneakerReference sneakerReference) : base(string.Empty, Method.POST)
 {
     AddJsonBody(sneakerReference);
 }