Example #1
0
        private RetailerService CreateRetailerService()
        {
            var ownerId = Guid.Parse(User.Identity.GetUserId());
            var service = new RetailerService(ownerId);

            return(service);
        }
Example #2
0
        public async void GetRetailers_CanGetAllRetailersAsList()
        {
            DbContextOptions <RimRockApiDbContext> options = new DbContextOptionsBuilder <RimRockApiDbContext>().UseInMemoryDatabase("CanGetAllRetailersAsList").Options;

            using (RimRockApiDbContext context = new RimRockApiDbContext(options))
            {
                // Arrange
                Retailer retailer1 = new Retailer();
                retailer1.ID   = 1;
                retailer1.Name = "Second Ascents";

                Retailer retailer2 = new Retailer();
                retailer2.ID   = 2;
                retailer2.Name = "Play It Again Sports";

                // Act
                RetailerService retailerService = new RetailerService(context);
                await context.Retailers.AddAsync(retailer1);

                await context.Retailers.AddAsync(retailer2);

                await context.SaveChangesAsync();

                List <Retailer> list = await retailerService.GetRetailers();

                // Assert
                Assert.Equal(list[1], retailer2);
            };
        }
        public async Task <ActionResult> Retailers()
        {
            var sitemapItems = new List <SitemapItem>();

            String key = String.Format("RetailersSiteMap-{0}", StoreId);

            ProductSitemapItemCache.TryGet(key, out sitemapItems);

            if (sitemapItems == null)
            {
                sitemapItems = new List <SitemapItem>();
                var retailersTask = RetailerService.GetRetailersAsync(StoreId, null, true);
                await Task.WhenAll(retailersTask);

                var retailers = retailersTask.Result;
                foreach (var retailer in retailers)
                {
                    var retailerDetailLink = LinkHelper.GetRetailerIdRouteValue(retailer);
                    var siteMap            = new SitemapItem(Url.AbsoluteAction("detail", "retailers", new { id = retailerDetailLink }),
                                                             changeFrequency: SitemapChangeFrequency.Monthly, priority: 1.0);
                    sitemapItems.Add(siteMap);
                }
                ProductSitemapItemCache.Set(key, sitemapItems, MemoryCacheHelper.CacheAbsoluteExpirationPolicy(ProjectAppSettings.CacheLongSeconds));
            }
            return(new SitemapResult(sitemapItems));
        }
Example #4
0
        public IHttpActionResult Get(int id)
        {
            RetailerService customerService = CreateRetailerService();
            var             retailer        = customerService.GetRetailerbyId(id);

            return(Ok(retailer));
        }
Example #5
0
        public IHttpActionResult GetAll()
        {
            RetailerService RetailerService = CreateRetailerService();
            var             retailer        = RetailerService.GetAllRetailers();

            return(Ok(retailer));
        }
Example #6
0
        public async Task <ActionResult> Index()
        {
            try
            {
                var pageDesignTask = PageDesignService.GetPageDesignByName(StoreId, IndexPageDesingName);

                var retailersTask = RetailerService.GetRetailersAsync(StoreId, null, true);
                var settings      = GetStoreSettings();
                RetailerHelper.StoreSettings = settings;
                RetailerHelper.ImageWidth    = GetSettingValueInt("RetailersIndex_ImageWidth", 50);
                RetailerHelper.ImageHeight   = GetSettingValueInt("RetailersIndex_ImageHeight", 50);

                await Task.WhenAll(pageDesignTask, retailersTask);

                var pageDesign = pageDesignTask.Result;
                var retailers  = retailersTask.Result;

                if (pageDesign == null)
                {
                    throw new Exception("PageDesing is null:" + IndexPageDesingName);
                }


                var pageOutput = RetailerHelper.GetRetailers(retailers, pageDesign);
                pageOutput.StoreSettings = settings;
                pageOutput.PageTitle     = "Retailers";
                pageOutput.MyStore       = this.MyStore;
                return(View(pageOutput));
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Index:" + ex.StackTrace);
                return(new HttpStatusCodeResult(500));
            }
        }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            try
            {
                log.LogInformation("C# HTTP trigger function processed a request.");

                var requestBody = await new StreamReader(req.Body).ReadToEndAsync();

                var requestBodyParsed = JObject.Parse(requestBody);

                ConsumerOperationsBodyValidator.ValidateBody(requestBodyParsed);

                var contractAddress = requestBodyParsed.Value <string>("contractAddress");

                var userId = requestBodyParsed.Value <string>("userId");

                var userProfile = await _userProfileService.GetUserProfile(userId);

                var keyStoreString = JsonConvert.SerializeObject(userProfile.UserKeyStore);

                var web3 = Web3Service.Initialize(keyStoreString, userProfile.Password);

                var retailerService = new RetailerService(web3, contractAddress);

                var createOrder = JsonConvert.DeserializeObject <CreateOrderFunction>(requestBody);
                createOrder.ClientEmail = userProfile.Email;

                var receiptForCreateOrderFunctionCall = await retailerService.CreateOrderRequestAndWaitForReceiptAsync(createOrder);

                var orderCreatedEvent = receiptForCreateOrderFunctionCall.DecodeAllEvents <OrderCreatedEventDTO>().FirstOrDefault().Event;

                log.LogInformation("Event:");
                log.LogInformation($" Message: {orderCreatedEvent.Message}");
                log.LogInformation($" Order ID: {orderCreatedEvent.OrderId}");
                log.LogInformation($" Status: {orderCreatedEvent.Status}");

                log.LogInformation($"Finished storing an int: Tx Hash: {receiptForCreateOrderFunctionCall.TransactionHash}");
                log.LogInformation($"Finished storing an int: Tx Status: {receiptForCreateOrderFunctionCall.Status.Value}");

                return(new OkObjectResult(orderCreatedEvent.OrderId));
            }
            catch (Exception e)
            {
                log.LogInformation($"The following Exception was raised in CreateOrder: {e.Message}");

                if (e is UserProfileException || e is SmartContractRevertException || e is RpcResponseException)
                {
                    return(new ContentResult
                    {
                        StatusCode = 401,
                        Content = Messages.UnAuthorizedMessage
                    });
                }

                return(new BadRequestObjectResult(e.Message));
            }
        }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            try
            {
                var requestBody = await new StreamReader(req.Body).ReadToEndAsync();

                log.LogInformation($"Request body: {requestBody}");

                var requestBodyParsed = JObject.Parse(requestBody);

                ConsumerOperationsBodyValidator.ValidateBody(requestBodyParsed);

                var contractAddress = requestBodyParsed.Value <string>("contractAddress");

                var userId = requestBodyParsed.Value <string>("userId");

                var userProfile = await _userProfileService.GetUserProfile(userId);

                var keyStoreString = JsonConvert.SerializeObject(userProfile.UserKeyStore);

                var web3 = Web3Service.Initialize(keyStoreString, userProfile.Password);

                var retailerService = new RetailerService(web3, contractAddress);

                var getOrderStatus = JsonConvert.DeserializeObject <GetOrderStatusFunction>(requestBody);

                var orderStatus = await retailerService.GetOrderStatusQueryAsync(getOrderStatus);

                log.LogInformation($"Order status: {orderStatus}");

                return(new OkObjectResult(new OrderStatusResponse
                {
                    status = orderStatus,
                    details = ((OrderStatus)orderStatus).ToString()
                }));
            }
            catch (Exception e)
            {
                log.LogInformation($"The following Exception was raised in GetOrderStatus: {e.Message}");

                if (e is UserProfileException || e is SmartContractRevertException || e is RpcResponseException)
                {
                    return(new ContentResult
                    {
                        StatusCode = 401,
                        Content = Messages.UnAuthorizedMessage
                    });
                }

                return(new BadRequestObjectResult(e.Message));
            }
        }
        public async Task ShowRemoveRetailerModalAsync(Guid RetailerId)
        {
            var DeleteRetailerModal = Modal.Show <Confirmation>("Are you sure you want to delete this Retailer?");
            var result = await DeleteRetailerModal.Result;

            if (!result.Cancelled)
            {
                var Installers = await InstallerService.GetAllInstallersByRetailerIdAsync(RetailerId);

                foreach (var installer in Installers)
                {
                    await InstallerService.DeleteInstallerAsync(installer.Id);
                }
                await RetailerService.DeleteRetailerAsync(RetailerId);
                await Refresh();
            }
        }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            try
            {
                var requestBody = await new StreamReader(req.Body).ReadToEndAsync();

                log.LogInformation($"Request body: {requestBody}");

                var requestBodyParsed = JObject.Parse(requestBody);

                BaseBodyValidator.ValidateBody(requestBodyParsed);

                var contractAddress = requestBodyParsed.Value <string>("contractAddress");

                var web3 = Web3Service.Initialize();

                var retailerService = new RetailerService(web3, contractAddress);

                var checkOrderItemsAvailability = JsonConvert.DeserializeObject <CheckOrderItemsAvailabilityFunction>(requestBody);

                await retailerService.CheckOrderItemsAvailabilityQueryAsync(checkOrderItemsAvailability);

                log.LogInformation($"Order {checkOrderItemsAvailability.OrderId} availability checked.");

                return(new OkResult());
            }
            catch (Exception e)
            {
                log.LogInformation($"The following Exception was raised in CheckOrderItemsAvailability: {e.Message}");

                if (e is SmartContractRevertException || e is RpcResponseException)
                {
                    return(new ContentResult
                    {
                        StatusCode = 401,
                        Content = Messages.UnAuthorizedMessage
                    });
                }

                return(new BadRequestObjectResult(e.Message));
            }
        }
Example #11
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            var requestBody = await new StreamReader(req.Body).ReadToEndAsync();

            log.LogInformation($"Request body: {requestBody}");

            var requestBodyParsed = JObject.Parse(requestBody);
            var contractAddress   = requestBodyParsed.Value <string>("contractAddress");

            var userId = requestBodyParsed.Value <string>("userId");
            var web3   = Web3Service.Initialize();

            var retailerService = new RetailerService(web3, contractAddress);

            var updateMinItemsPerOrder = JsonConvert.DeserializeObject <UpdateMinItemsPerOrderFunction>(requestBody);

            try
            {
                await retailerService.UpdateMinItemsPerOrderRequestAsync(updateMinItemsPerOrder);

                log.LogInformation($"The minimum amount allowed of an item has been updated to: {updateMinItemsPerOrder.MinItems}");

                return(new OkResult());
            }
            catch (Exception e)
            {
                log.LogInformation($"The following Exception was raised in UpdateMinItemsPerOrder: {e.Message}");

                if (e is SmartContractRevertException || e is RpcResponseException)
                {
                    return(new ContentResult
                    {
                        StatusCode = 401,
                        Content = Messages.UnAuthorizedMessage
                    });
                }

                return(new BadRequestObjectResult(e.Message));
            }
        }
Example #12
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            try
            {
                var requestBody = await new StreamReader(req.Body).ReadToEndAsync();

                log.LogInformation($"Request body: {requestBody}");

                var requestBodyParsed = JObject.Parse(requestBody);

                BaseBodyValidator.ValidateBody(requestBodyParsed);

                var contractAddress = requestBodyParsed.Value <string>("contractAddress");

                var web3 = Web3Service.Initialize();

                var retailerService = new RetailerService(web3, contractAddress);

                var newOrders = await retailerService.GetNewOrdersQueryAsync();

                log.LogInformation($"The amount of new orders is: {newOrders.Count}");

                return(new OkObjectResult(newOrders));
            }
            catch (Exception e)
            {
                log.LogInformation($"The following Exception was raised in GetNewOrders: {e.Message}");

                if (e is SmartContractRevertException || e is RpcResponseException)
                {
                    return(new ContentResult
                    {
                        StatusCode = 401,
                        Content = Messages.UnAuthorizedMessage
                    });
                }

                return(new BadRequestObjectResult(e.Message));
            }
        }
Example #13
0
        public async Task <ActionResult> Detail(String id = "")
        {
            try
            {
                int retailerId     = id.Split("-".ToCharArray()).Last().ToInt();
                var pageDesignTask = PageDesignService.GetPageDesignByName(StoreId, RetailerDetailPageDesignName);
                var retailerTask   = RetailerService.GetRetailerAsync(retailerId);
                var take           = GetSettingValueInt("RetailerProducts_ItemNumber", 20);
                var productsTask   = ProductService.GetProductsByProductTypeAsync(StoreId, null, null, retailerId, StoreConstants.ProductType, 1,
                                                                                  take, true, "normal", null);
                var productCategoriesTask = ProductCategoryService.GetCategoriesByRetailerIdAsync(StoreId, retailerId);

                var settings = GetStoreSettings();
                RetailerHelper.StoreSettings = settings;
                RetailerHelper.ImageWidth    = GetSettingValueInt("RetailerDetail_ImageWidth", 50);
                RetailerHelper.ImageHeight   = GetSettingValueInt("RetailerDetail_ImageHeight", 50);

                await Task.WhenAll(retailerTask, pageDesignTask, productsTask, productCategoriesTask);

                var pageDesign        = pageDesignTask.Result;
                var products          = productsTask.Result;
                var productCategories = productCategoriesTask.Result;
                var retailer          = retailerTask.Result;

                if (pageDesign == null)
                {
                    throw new Exception("PageDesing is null:" + RetailerDetailPageDesignName);
                }

                var dic = RetailerHelper.GetRetailerDetailPage(retailer, products, pageDesign, productCategories);
                dic.StoreSettings = settings;
                dic.MyStore       = this.MyStore;
                dic.PageTitle     = retailer.Name;
                return(View(dic));
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Stack Trace:" + ex.StackTrace, id);
                return(new HttpStatusCodeResult(500));
            }
        }
Example #14
0
        public async void GetRetailer_CanGetSingleRetailer()
        {
            DbContextOptions <RimRockApiDbContext> options = new DbContextOptionsBuilder <RimRockApiDbContext>().UseInMemoryDatabase("CanGetSingleRetailer").Options;

            using (RimRockApiDbContext context = new RimRockApiDbContext(options))
            {
                // Arrange
                Retailer retailer = new Retailer();
                retailer.ID   = 1;
                retailer.Name = "Backcountry Essentials";

                // Act
                RetailerService retailerService = new RetailerService(context);
                await context.Retailers.AddAsync(retailer);

                await context.SaveChangesAsync();

                Retailer result = await retailerService.GetRetailer(retailer.ID);

                // Assert
                Assert.Equal(result, retailer);
            };
        }
        public async Task AddNewRetailerAsync(CreateRetailerRequest RetailerRequest)
        {
            await RetailerService.AddNewRetailerAsync(RetailerRequest);

            await ModalInstance.CloseAsync();
        }
Example #16
0
        public async Task Refresh()
        {
            Retailer = await RetailerService.GetOneRetailerAsync(RetailerId);

            Installers = await InstallerService.GetAllInstallersByRetailerIdAsync(RetailerId);
        }
 public async Task Refresh()
 {
     Retailers = await RetailerService.GetAllRetailersAsync();
 }