public static void SetCategories(this EditMarketItemModel model, MarketplaceItemModel marketItem)
 {
     if (marketItem != null)
     {
         var cat1 = model.Categories.FirstOrDefault(x => x.Id == marketItem.CategoryId);
         var cat2 = model.Categories.FirstOrDefault(x => x.Id == (cat1 == null ? -1 : cat1.ParentId) && x.Id > 0);
         var cat3 = model.Categories.FirstOrDefault(x => x.Id == (cat2 == null ? -1 : cat2.ParentId) && x.Id > 0);
         if (cat1 == null)
         {
             model.MainCategoryId = -2;
         }
         else if (cat2 == null)
         {
             model.MainCategoryId = cat1.Id;
         }
         else if (cat3 == null)
         {
             model.SubCategoryId  = cat1.Id;
             model.MainCategoryId = cat2.Id;
         }
         else
         {
             model.SubCategoryId  = cat1.Id;
             model.CategoryId     = cat2.Id;
             model.MainCategoryId = cat3.Id;
         }
     }
 }
 public static string GetCity(this MarketplaceItemModel marketItem)
 {
     if (marketItem != null)
     {
         var location = StaticDataCache.Locations.FirstOrDefault(x => x.Id == marketItem.LocationId);
         if (location != null)
         {
             var parent = StaticDataCache.Locations.FirstOrDefault(x => x.Id == location.ParentId && x.Id != location.Id);
             if (parent != null)
             {
                 return(location.Name);
             }
         }
     }
     return(string.Empty);
 }
 public static string GetLocation(this MarketplaceItemModel marketItem)
 {
     if (marketItem != null)
     {
         var location = StaticDataCache.Locations.FirstOrDefault(x => x.Id == marketItem.LocationId);
         if (location != null)
         {
             var parent = StaticDataCache.Locations.FirstOrDefault(x => x.Id == location.ParentId && x.Id != location.Id);
             if (parent != null)
             {
                 return(string.Join(", ", parent.Name, location.Name, marketItem.LocationRegion));
             }
             return(location.Name);
         }
     }
     return("Unknown");
 }
 public static int GetCountryId(this MarketplaceItemModel marketItem)
 {
     if (marketItem != null)
     {
         var location = StaticDataCache.Locations.FirstOrDefault(x => x.Id == marketItem.LocationId);
         if (location != null)
         {
             var parent = StaticDataCache.Locations.FirstOrDefault(x => x.Id == location.ParentId && x.Id != location.Id);
             if (parent != null)
             {
                 return(parent.Id);
             }
             return(location.Id);
         }
     }
     return(-2);
 }
        private IEnumerable <OrderModel> GetUserModelsByItems(
            IEnumerable <OrderEntity> orders,
            IEnumerable <MarketplaceItemEntity> items,
            IEnumerable <UserEntity> users)
        {
            var orderModels = orders.Select(order =>
            {
                var orderStatus = OrderStatusModel.ToDomainModel(
                    _orderStatusRepository.Value.GetStatusById((int)order.StatusId));

                var itemModel = MarketplaceItemModel.ToDomainModel(
                    items.First(item => item.Id == order.ItemId));

                var recipients      = users.FirstOrDefault(user => user.Id == order.BuyerId);
                var recipientsModel = recipients == null ? null : UserModel.ToDomainModel(recipients);

                return(new OrderModel(order.Id, orderStatus, order.OrderTime, itemModel, recipientsModel));
            });

            return(orderModels);
        }
Beispiel #6
0
        public async Task <MarketplaceItemModel> GetMarketItem(int marketItemId)
        {
            using (var context = ExchangeDataContextFactory.CreateReadOnlyContext())
            {
                var query = context.MarketItem
                            .Where(x => x.Id == marketItemId)
                            .Select(marketItem => new
                {
                    User        = marketItem.User,
                    CategoryId  = marketItem.CategoryId,
                    Id          = marketItem.Id,
                    CloseDate   = marketItem.CloseDate,
                    Created     = marketItem.Created,
                    AskingPrice = marketItem.AskingPrice,
                    Description = marketItem.Description,
                    Feature     = marketItem.Feature,
                    LocationId  = marketItem.LocationId,
                    Location    = marketItem.Location.ParentId != null
                                                                                        ? string.Concat(marketItem.Location.Parent.Name, ", ", marketItem.Location.Name)
                                                                                        : marketItem.Location.Name,
                    ReservePrice                 = marketItem.ReservePrice,
                    MainImage                    = marketItem.MainImage,
                    Status                       = marketItem.Status,
                    Title                        = marketItem.Title,
                    Type                         = marketItem.Type,
                    CurrencyId                   = marketItem.CurrencyId,
                    Symbol                       = marketItem.Currency.Symbol,
                    LocationRegion               = marketItem.LocationRegion,
                    AllowPickup                  = marketItem.AllowPickup,
                    PickupOnly                   = marketItem.PickupOnly,
                    ShippingBuyerArrange         = marketItem.ShippingBuyerArrange,
                    ShippingNational             = marketItem.ShippingNational,
                    ShippingInternational        = marketItem.ShippingInternational,
                    ShippingNationalPrice        = marketItem.ShippingNationalPrice,
                    ShippingNationalDetails      = marketItem.ShippingNationalDetails,
                    ShippingInternationalPrice   = marketItem.ShippingInternationalPrice,
                    ShippingInternationalDetails = marketItem.ShippingInternationalDetails,
                    AlternateImages              = marketItem.Images.Select(x => x.Image).ToList(),
                    Questions                    = marketItem.Questions.Select(q => new MarketQuestionModel
                    {
                        Id        = q.Id,
                        Answer    = q.Answer,
                        Question  = q.Question,
                        Timestamp = q.Timestamp,
                        UserName  = q.User.UserName
                    }).ToList(),
                    Bids = marketItem.Bids.Select(b => new MarketItemBidModel
                    {
                        Id           = b.Id,
                        Amount       = b.BidAmount,
                        IsWinningBid = b.IsWinningBid,
                        Timestamp    = b.Timestamp,
                        TrustRating  = b.User.TrustRating,
                        UserId       = b.UserId,
                        UserName     = b.User.UserName
                    }).ToList(),
                    HasBuyersFeedback  = marketItem.Feedback.Any(f => f.ReceiverUserId == marketItem.UserId),
                    HasSellersFeedback = marketItem.Feedback.Any(f => f.SenderUserId == marketItem.UserId),
                    Buyer = marketItem.Bids.Any(x => x.IsWinningBid)
                                                        ? marketItem.Bids.FirstOrDefault(x => x.IsWinningBid).User
                                                        : null,
                });
                var result = await query.FirstOrDefaultNoLockAsync().ConfigureAwait(false);

                if (result == null)
                {
                    return(null);
                }

                var marketItemModel = new MarketplaceItemModel
                {
                    UserId          = result.User.Id,
                    UserName        = result.User.UserName,
                    UserTrustRating = result.User.TrustRating,
                    CategoryId      = result.CategoryId,
                    Id                           = result.Id,
                    CloseDate                    = result.CloseDate,
                    Created                      = result.Created,
                    AskingPrice                  = result.AskingPrice,
                    Description                  = result.Description,
                    Feature                      = result.Feature,
                    LocationId                   = result.LocationId,
                    Location                     = result.Location,
                    LocationRegion               = result.LocationRegion,
                    ReservePrice                 = result.ReservePrice,
                    MainImage                    = result.MainImage,
                    Status                       = result.Status,
                    Title                        = result.Title,
                    Type                         = result.Type,
                    CurrencyId                   = result.CurrencyId,
                    Symbol                       = result.Symbol,
                    AllowPickup                  = result.AllowPickup,
                    PickupOnly                   = result.PickupOnly,
                    ShippingBuyerArrange         = result.ShippingBuyerArrange,
                    ShippingNational             = result.ShippingNational,
                    ShippingInternational        = result.ShippingInternational,
                    ShippingNationalPrice        = result.ShippingNationalPrice,
                    ShippingNationalDetails      = result.ShippingNationalDetails,
                    ShippingInternationalPrice   = result.ShippingInternationalPrice,
                    ShippingInternationalDetails = result.ShippingInternationalDetails,
                    AlternateImages              = result.AlternateImages,
                    Questions                    = result.Questions,
                    Bids                         = result.Bids.OrderByDescending(b => b.Amount).ToList(),
                    HasBuyersFeedback            = result.HasBuyersFeedback,
                    HasSellersFeedback           = result.HasSellersFeedback,
                    BuyerUserId                  = result.Buyer == null ? null : new Guid?(result.Buyer.Id),
                    BuyerUserName                = result.Buyer == null ? string.Empty : result.Buyer.UserName,
                    BuyerTrustRating             = result.Buyer == null ? 0 : result.Buyer.TrustRating,
                    CurrentBidPrice              = result.Bids.Any() ? result.Bids.Max(x => x.Amount) : 0
                };

                return(marketItemModel);
            }
        }