예제 #1
0
            private void CreateListing(IEnumerable <BonanzaEntry> entries)
            {
                ListingDto listingDto = new ListingDto();

                listingDto.Brand           = entries.First(p => !string.IsNullOrWhiteSpace(p.Brand)).Brand;
                listingDto.FullDescription = entries.First(p => !string.IsNullOrWhiteSpace(p.FullDescription)).FullDescription;

                if (entries.Count() > 1)
                {
                    listingDto.Sku = entries.First(p => !string.IsNullOrWhiteSpace(p.ClassName)).ClassName;

                    BonanzaEntry entry = entries.First(p => !string.IsNullOrWhiteSpace(p.Title));
                    listingDto.Title       = GetParentTitle(entry);;
                    listingDto.IsVariation = true;
                }
                else
                {
                    listingDto.Sku         = entries.First().Sku;
                    listingDto.Title       = entries.First().Title;
                    listingDto.IsVariation = false;
                }

                foreach (BonanzaEntry entry in entries)
                {
                    ListingItemDto listingItem = new ListingItemDto();

                    listingItem.Sku   = entry.Sku;
                    listingItem.Qty   = entry.Q;
                    listingItem.Price = entry.P;

                    listingDto.Items.Add(listingItem);
                }

                _services.Publish(_marketplace.ID, listingDto);
            }
예제 #2
0
        /// <inheritdoc cref="IListingRepository.UpdateListingAsync(long, ListingDto)" />
        public async Task UpdateListingAsync(long listingId, ListingDto listingUpdateInfo)
        {
            Listing listing = await context.Listings.FindAsync(listingId);

            if (listing != null)
            {
                listing = mapper.Map <Listing>(listingUpdateInfo);

                context.Listings.Update(listing);
                await context.SaveChangesAsync();
            }
        }
 public async Task <ListingDto> CreateListing(CreateListingInDTO listingIn)
 {
     try
     {
         var listing = new ListingDto();
         //using (_context)
         //{
         //    var listing = _context.listing.Add(new Listing
         //    {
         //        Id =
         //    });
         //}
         return(listing);
     }
     catch (Exception ex)
     {
         throw new Exception("ERROR at CreateListing: " + ex.Message);
     }
 }
예제 #4
0
        internal static Listing CreateListing(Guid customerId, ListingDto listingDto)
        {
            Listing listing = new Listing();

            return(listing);
        }
        private void CreateListing(IEnumerable <EbayEntry> entries, bool isVariation)
        {
            ListingDto listingDto = new ListingDto();

            listingDto.Brand           = entries.First(p => !string.IsNullOrWhiteSpace(p.Brand)).Brand;
            listingDto.Duration        = entries.First(p => !string.IsNullOrWhiteSpace(p.Format)).GetDuration();
            listingDto.Format          = entries.First(p => !string.IsNullOrWhiteSpace(p.Format)).GetFormat();
            listingDto.FullDescription = entries.First(p => !string.IsNullOrWhiteSpace(p.FullDescription)).FullDescription;
            listingDto.IsVariation     = isVariation;


            if (isVariation)
            {
                listingDto.Title = GetParentTitle(entries.First(p => !string.IsNullOrWhiteSpace(p.Title)));
            }
            else
            {
                listingDto.Title = entries.First(p => !string.IsNullOrWhiteSpace(p.Title)).Title;
            }

            if (entries.Any(p => !string.IsNullOrWhiteSpace(p.Template)))
            {
                listingDto.Template = entries.First(p => !string.IsNullOrWhiteSpace(p.Template)).Template;
            }

            if (entries.Any(p => !string.IsNullOrWhiteSpace(p.Design)))
            {
                listingDto.Design = entries.First(p => !string.IsNullOrWhiteSpace(p.Design)).Design;
            }

            if (entries.Any(p => p.StartDate != null))
            {
                listingDto.ScheduleTime = entries.First(p => p.StartDate != null).StartDate;
            }



            if (isVariation)
            {
                listingDto.Sku = entries.First(p => !string.IsNullOrWhiteSpace(p.ClassName)).ClassName;
            }
            else
            {
                listingDto.Sku = entries.First().Sku;

                if (entries.First().BIN != null && listingDto.Format.Equals(EbayMarketplace.FORMAT_AUCTION))
                {
                    listingDto.BinPrice = entries.First().BIN;
                }
            }

            foreach (EbayEntry entry in entries)
            {
                ListingItemDto listingItem = new ListingItemDto();

                listingItem.Sku   = entry.Sku;
                listingItem.Qty   = entry.Q;
                listingItem.Price = entry.P;
                listingDto.Items.Add(listingItem);
            }

            _ebayServices.Publish(_marketplace.ID, listingDto, "Publisher");
        }
        private void UpdateListing(EbayListing listing, IEnumerable <EbayEntry> entries)
        {
            ListingDto listingDto = new ListingDto();

            listingDto.Code        = listing.Code;
            listingDto.Format      = entries.First(p => !string.IsNullOrWhiteSpace(p.Format)).GetFormat();
            listingDto.Brand       = entries.First(p => !string.IsNullOrWhiteSpace(p.Brand)).Brand;
            listingDto.IsVariation = (bool)listing.IsVariation;

            if (entries.Any(p => !string.IsNullOrWhiteSpace(p.Template)))
            {
                listingDto.Template = entries.First(p => !string.IsNullOrWhiteSpace(p.Template)).Template;
            }

            if (entries.Any(p => !string.IsNullOrWhiteSpace(p.Design)))
            {
                listingDto.Design = entries.First(p => !string.IsNullOrWhiteSpace(p.Design)).Design;
            }

            if (entries.Any(p => !string.IsNullOrWhiteSpace(p.FullDescription)))
            {
                listingDto.FullDescription = entries.First(p => !string.IsNullOrWhiteSpace(p.FullDescription)).FullDescription;
            }

            if (entries.Any(p => !string.IsNullOrWhiteSpace(p.Title)))
            {
                if ((bool)listing.IsVariation)
                {
                    listingDto.Title = GetParentTitle(entries.First(p => !string.IsNullOrWhiteSpace(p.Title)));
                }
                else
                {
                    listingDto.Title = entries.First(p => !string.IsNullOrWhiteSpace(p.Title)).Title;
                }
            }

            foreach (EbayEntry entry in entries)
            {
                ListingItemDto listingItemDto = new ListingItemDto();
                listingItemDto.Sku   = entry.Sku;
                listingItemDto.Qty   = entry.Q;
                listingItemDto.Price = entry.P;
                listingDto.Items.Add(listingItemDto);
            }

            var activeListingItems = listing.ListingItems.Where(p => p.Quantity != 0);

            foreach (EbayListingItem listingItem in activeListingItems)
            {
                if (!listingDto.Items.Any(p => p.Sku.Equals(listingItem.Sku)))
                {
                    ListingItemDto listingItemDto = new ListingItemDto();
                    listingItemDto.Sku   = listingItem.Sku;
                    listingItemDto.Qty   = listingItem.Quantity;
                    listingItemDto.Price = listingItem.Price;
                    listingDto.Items.Add(listingItemDto);
                }
            }

            var activeSkus = activeListingItems.Select(p => p.Item.ItemLookupCode);

            bool mustIncludeProductData = listingDto.Items.Any(p => !activeSkus.Any(s => s.Equals(p.Sku)));

            bool includeTemplate = entries.Any(p => p.GetUpdateFlags().Any(s => s.Trim().ToUpper().Equals("TEMPLATE")));

            bool includeProductData = entries.Any(p => p.GetUpdateFlags().Any(s => s.Trim().ToUpper().Equals("PRODUCTDATA"))) || mustIncludeProductData;

            if (listingDto.Items.All(p => p.Qty == 0))
            {
                _ebayServices.End(_marketplace.ID, listing.Code, "Publisher");
            }
            else
            {
                _ebayServices.Revise(_marketplace.ID, listingDto, includeProductData, includeTemplate, "Publisher");
            }
        }
예제 #7
0
        public async Task <GetFilterListResponse> GetFilterList()
        {
            try
            {
                var countries = await _listingRepository.GetAllCounties();

                var provinces = await _listingRepository.GetAllProvinces();

                var listingtypes = await _listingRepository.GetAllListings();

                var cities = await _listingRepository.GetAllCities();

                GetFilterListResponse filterListResponse = new GetFilterListResponse();
                filterListResponse.CountryList  = new List <CountryDto>();
                filterListResponse.ListingTypes = new List <ListingDto>();

                foreach (var listingType in listingtypes)
                {
                    ListingDto listingDto = new ListingDto()
                    {
                        ListingFilterName = listingType.ListingName,
                        ListingType       = listingType.Id
                    };

                    filterListResponse.ListingTypes.Add(listingDto);
                }

                foreach (var country in countries)
                {
                    var countryDto = new CountryDto();

                    countryDto.CountryType = country.Id;
                    countryDto.CountryName = country.CountryName;
                    countryDto.Provinces   = new List <ProvinceDto>();

                    foreach (var province in provinces)
                    {
                        if (province.CountryRefId == country.Id)
                        {
                            var provinceDto = new ProvinceDto();
                            provinceDto.Cities       = new List <CityDto>();
                            provinceDto.ProvinceType = province.Id;
                            provinceDto.ProvinceName = province.ProvinceName;

                            foreach (var city in cities)
                            {
                                if (city.CountryRefId == country.Id && city.ProvinceRefId == province.Id)
                                {
                                    var cityDto = new CityDto()
                                    {
                                        CityName = city.RegionName,
                                        CityType = city.Id
                                    };

                                    provinceDto.Cities.Add(cityDto);
                                }
                            }
                            countryDto.Provinces.Add(provinceDto);
                        }
                    }
                    filterListResponse.CountryList.Add(countryDto);
                }
                return(filterListResponse);
            }
            catch (Exception ex)
            {
                _logger.LogError($"error while constructing filter list: {ex}");
                throw ex.GetBaseException();
            }
        }
예제 #8
0
        public void AddListing(ListingDto listingDto)
        {
            Listing listing = Listing.CreateListing(Id, listingDto);

            _listings.Add(listing);
        }
예제 #9
0
            private void UpdateListing(BonanzaListing listing, IEnumerable <BonanzaEntry> entries)
            {
                ListingDto listingDto = new ListingDto();

                listingDto.Code        = listing.Code;
                listingDto.Brand       = entries.First(p => !string.IsNullOrWhiteSpace(p.Brand)).Brand;
                listingDto.IsVariation = (bool)listing.IsVariation;

                if ((bool)listing.IsVariation)
                {
                    listingDto.IsVariation = true;
                    listingDto.Sku         = entries.First(p => !string.IsNullOrWhiteSpace(p.ClassName)).ClassName;
                }
                else
                {
                    listingDto.IsVariation = false;
                    listingDto.Sku         = listingDto.Sku = entries.First().Sku;
                }

                if (entries.Any(p => !string.IsNullOrWhiteSpace(p.FullDescription)))
                {
                    listingDto.FullDescription = entries.First(p => !string.IsNullOrWhiteSpace(p.FullDescription)).FullDescription;
                }

                foreach (BonanzaEntry entry in entries)
                {
                    BonanzaListingItem listingItem = listing.ListingItems.SingleOrDefault(p => p.Item.ItemLookupCode.Equals(entry.Sku));

                    ListingItemDto listingItemDto = new ListingItemDto();
                    listingItemDto.Sku   = entry.Sku;
                    listingItemDto.Qty   = entry.Q;
                    listingItemDto.Price = entry.P;

                    listingDto.Items.Add(listingItemDto);
                }

                var activeSkus = listing.ListingItems.Where(p => p.Quantity != 0).Select(p => p.Item.ItemLookupCode);

                bool mustIncludeProductData = listingDto.Items.Any(p => !activeSkus.Any(s => s.Equals(p.Sku)));

                foreach (BonanzaListingItem listingItem in listing.ListingItems)
                {
                    if (!listingDto.Items.Any(p => p.Sku.Equals(listingItem.Item.ItemLookupCode)))
                    {
                        ListingItemDto listingItemDto = new ListingItemDto();
                        listingItemDto.Qty   = listingItem.Quantity;
                        listingItemDto.Price = listingItem.Price;

                        listingDto.Items.Add(listingItemDto);
                    }
                }

                bool includeTemplate = entries.Any(p => p.GetUpdateFlags().Any(s => s.Trim().ToUpper().Equals("TEMPLATE")));

                bool includeProductData = entries.Any(p => p.GetUpdateFlags().Any(s => s.Trim().ToUpper().Equals("PRODUCTDATA"))) || mustIncludeProductData;

                if (listingDto.Items.All(p => p.Qty == 0))
                {
                    _services.End(_marketplace.ID, listing.Code);
                }
                else
                {
                    _services.Revise(_marketplace.ID, listingDto, includeProductData, includeTemplate);
                }
            }
예제 #10
0
        public ActionResult GetListings(string suburb = null, string categoryType = null, string statusType = null, string skip = null, string take = null)
        {
            string initialQuery  = "SELECT *, count(*) OVER() AS full_count FROM Listings";
            string appendedQuery = "";

            //Validation for parameters passed to method
            //Check if expected string values are actually strings not integers
            if (suburb != null)
            {
                bool isNumeric = int.TryParse(suburb, out _);
                if (isNumeric)
                {
                    return(UnprocessableEntity("Suburb parameter must be of type string"));
                }
                else
                {
                    appendedQuery += " WHERE Suburb = '" + suburb + "'";
                }
            }
            if (categoryType != null)
            {
                bool isNumeric = int.TryParse(categoryType, out _);
                if (isNumeric)
                {
                    return(UnprocessableEntity("categoryType parameter must be of type string"));
                }
                else
                {
                    //if category name maps to dictionary, append to query
                    if (_categoryTypes.TryGetValue(categoryType, out int categoryId))
                    {
                        if (appendedQuery != "")
                        {
                            appendedQuery += " AND CategoryType = '" + categoryId + "'";
                        }
                        else
                        {
                            appendedQuery += "WHERE CategoryType = '" + categoryId;
                        }
                    }
                }
            }
            if (statusType != null)
            {
                bool isNumeric = int.TryParse(statusType, out _);
                if (isNumeric)
                {
                    return(UnprocessableEntity("statusType parameter must be of type string"));
                }
                else
                {
                    //if category name maps to dictionary, append to query
                    if (_statusTypes.TryGetValue(statusType, out int statusId))
                    {
                        if (appendedQuery != "")
                        {
                            appendedQuery += " AND StatusType = '" + statusId + "'";
                        }
                        else
                        {
                            appendedQuery += " WHERE StatusType = '" + statusId + "'";
                        }
                    }
                }
            }

            //Order results by listing id
            appendedQuery += " ORDER BY ListingId";


            //Check that number parameters are of type integer
            if (skip != null)
            {
                bool isNumeric = int.TryParse(skip, out _);
                if (!isNumeric)
                {
                    return(UnprocessableEntity("skip parameter must be of type number"));
                }
                else
                {
                    appendedQuery += $" OFFSET {skip} ROWS ";
                }
            }

            else
            {
                //if skip is not provided, default to 0 so 'take' will work
                appendedQuery += $" OFFSET 0 ROWS";
            }


            if (take != null)
            {
                bool isNumeric = int.TryParse(take, out _);
                if (!isNumeric)
                {
                    return(UnprocessableEntity("take parameter must be of type number"));
                }
                else
                {
                    appendedQuery += $" FETCH NEXT {take} ROWS ONLY";
                }
            }

            //After validation create connection string
            string connString = @"server=JAKE-PC;Integrated Security=SSPI;database=Backend-TakeHomeExercise;Trusted_Connection=True;";



            //Join the two connection strings
            var mainQuery = initialQuery + appendedQuery;

            using var con = new SqlConnection(connString);
            con.Open();


            using var cmd = new SqlCommand(mainQuery, con);

            using SqlDataReader rdr = cmd.ExecuteReader();



            List <ListingDto> listingArrray = new List <ListingDto>();

            var totalRecordCount = 0;

            var counter = 0;

            while (rdr.Read())
            {
                //Only want to assign total once
                if (counter == 0)
                {
                    totalRecordCount = (int)rdr["full_count"];
                    counter++;
                }

                var listing = new ListingDto();
                listing.ListingId    = (int)rdr["ListingId"];
                listing.StreetNumber = rdr["StreetNumber"] is DBNull ? null : (string)rdr["StreetNumber"];
                listing.Street       = rdr["Street"] is DBNull ? null : (string)rdr["Street"];
                listing.Suburb       = (string)rdr["Suburb"];
                listing.State        = (string)rdr["State"];
                listing.Postcode     = (rdr["Postcode"] == null) ? null : (int)rdr["Postcode"];
                listing.CategoryType = (int)rdr["CategoryType"];
                listing.StatusType   = (int)rdr["StatusType"];
                listing.DisplayPrice = (string)rdr["DisplayPrice"];
                listing.Title        = (string)rdr["Title"] ?? null;
                listing.shortPrice   = formatShortPrice(listing.DisplayPrice).Insert(0, "$");
                listingArrray.Add(listing);
            }
            ;

            WrappedDataObject returningObj = new WrappedDataObject();

            returningObj.items = listingArrray;
            returningObj.total = totalRecordCount;



            return(Ok(returningObj));
        }