示例#1
0
        public void SeedDatabase()
        {
            var accessorFactory      = new AccessorFactory();
            var applicationsAccessor = accessorFactory.CreateAccessor <IApplicationsAccessor>();
            var claimsAccessor       = accessorFactory.CreateAccessor <IClaimsAccessor>();
            var userClaimsAccessor   = accessorFactory.CreateAccessor <IUserClaimsAccessor>();
            var membershipsAccessor  = accessorFactory.CreateAccessor <IMembershipsAccessor>();

            applicationsAccessor.SaveApplication(application);
            claimsAccessor.SaveClaim(claim);
            userClaimsAccessor.SaveUserClaim(userClaim);
            membershipsAccessor.SaveMembership(membership);
        }
示例#2
0
        protected IRemittanceAccessor CreateRemittanceAccessor()
        {
            var accessor = new AccessorFactory(_context, new UtilityFactory(_context));
            var result   = accessor.CreateAccessor <IRemittanceAccessor>();

            return(result);
        }
示例#3
0
        private NotificationResponse SendOrderEventEmail(int orderId, string eventMessage)
        {
            try
            {
                // get the order info
                var order = AccessorFactory.CreateAccessor <IOrderAccessor>()
                            .FindOrder(orderId);
                // get any necessary seller data
                var seller = AccessorFactory.CreateAccessor <ISellerAccessor>()
                             .Find(order.SellerId);
                // format the email
                var messageBody = EngineFactory.CreateEngine <IEmailFormattingEngine>()
                                  .FormatOrderEmailBody(order, seller);
                // send the email
                AccessorFactory.CreateAccessor <IEmailAccessor>()
                .SendEmailNotification(order.BillingAddress.EmailAddress, $"{eventMessage}: {seller.Name}", messageBody);

                return(new NotificationResponse()
                {
                    Success = true,
                    Message = $"{eventMessage} email sent to {order.BillingAddress.EmailAddress} for order {order.Id}"
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex);

                return(new NotificationResponse()
                {
                    Success = false,
                    Message = $"There was a problem processing the {eventMessage} notice"
                });
            }
        }
示例#4
0
        WebStore.WebStoreSearchResponse WebStore.IWebStoreCatalogManager.Search(int catalogId, string query)
        {
            try
            {
                var products = AccessorFactory.CreateAccessor <ISearchAccessor>().Search(catalogId, query);
                var list     = new List <WebStore.ProductSearchItem>();

                foreach (var product in products)
                {
                    var searchProduct = new WebStore.ProductSearchItem()
                    {
                        Id    = product.Id,
                        Name  = product.Name,
                        Price = product.Price
                    };
                    list.Add(searchProduct);
                }

                return(new WebStore.WebStoreSearchResponse()
                {
                    Success = true,
                    Products = list.ToArray(),
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex);

                return(new WebStore.WebStoreSearchResponse()
                {
                    Success = false
                });
            }
        }
示例#5
0
        public ProjectListItem[] GetAllProjects()
        {
            var projectAccess = AccessorFactory.CreateAccessor <IProjectAccess>();

            DPL.PMTool.Accessors.Shared.EntityFramework.Project[] allProjects =
                projectAccess.Projects();

            ProjectListItem[] projectList;
            if (allProjects == null)
            {
                projectList = new ProjectListItem[0];
            }
            else
            {
                projectList = new ProjectListItem[allProjects.Length];
                if (allProjects.Length > 0)
                {
                    for (int i = 0; i < allProjects.Length; i++)
                    {
                        projectList[i]      = new ProjectListItem();
                        projectList[i].Id   = allProjects[i].Id;
                        projectList[i].Name = allProjects[i].Name;
                    }
                }
            }

            return(projectList);
        }
        private IPaymentAccessor CreatePaymentAccessor(int sellerId = 1)
        {
            var accessor = new AccessorFactory(Context, new UtilityFactory(Context));
            var result   = accessor.CreateAccessor <IPaymentAccessor>();

            return(result);
        }
示例#7
0
        public WebStore.WebStoreCartResponse SaveCartItem(int catalogId, int productId, int quantity)
        {
            try
            {
                // NOTE: no need to check for cart id in context since the accessor will take care of this for us and create a cart if necessary
                SalesAcc.ICartAccessor cartAccessor = AccessorFactory.CreateAccessor <SalesAcc.ICartAccessor>();

                // Save the cart item
                Cart storedCart = cartAccessor.SaveCartItem(catalogId, productId, quantity);

                // generate the pricing and taxes for the cart and convert to the public DTO
                var result = GenerateCartPricingAndTax(storedCart);

                // Return the cart
                return(new WebStore.WebStoreCartResponse()
                {
                    Success = true,
                    Cart = result
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex);

                return(new WebStore.WebStoreCartResponse()
                {
                    Success = false,
                    Message = "There was a problem editting the cart"
                });
            }
        }
示例#8
0
        private IShippingAccessor CreateShippingAccessor()
        {
            var accessor = new AccessorFactory(Context, new UtilityFactory(Context));
            var result   = accessor.CreateAccessor <IShippingAccessor>();

            return(result);
        }
示例#9
0
        string IServiceContractBase.TestMe(string input)
        {
            input = base.TestMe(input);
            input = AccessorFactory.CreateAccessor <ICatalogAccessor>().TestMe(input);

            return(input);
        }
示例#10
0
        public override string TestMe(string input)
        {
            input = base.TestMe(input);
            input = AccessorFactory.CreateAccessor <IRemittanceAccessor>().TestMe(input);

            return(input);
        }
示例#11
0
        protected IOrderAccessor CreateOrderAccessor(int sellerId = 1)
        {
            _context.SellerId = sellerId;
            var accessor = new AccessorFactory(_context, new UtilityFactory(_context));
            var result   = accessor.CreateAccessor <IOrderAccessor>();

            return(result);
        }
示例#12
0
        protected ICartAccessor CreateCartAccessor(Guid sessionId)
        {
            _context.SessionId = sessionId;
            var accessor = new AccessorFactory(_context, new UtilityFactory(_context));
            var result   = accessor.CreateAccessor <ICartAccessor>();

            return(result);
        }
示例#13
0
 public override string TestMe(string input)
 {
     input = base.TestMe(input);
     input = AccessorFactory.CreateAccessor <SalesAcc.ICartAccessor>().TestMe(input);
     input = EngineFactory.CreateEngine <ITaxCalculationEngine>().TestMe(input);
     input = EngineFactory.CreateEngine <ICartPricingEngine>().TestMe(input);
     return(input);
 }
示例#14
0
        public override string TestMe(string input)
        {
            input = base.TestMe(input);
            input = EngineFactory.CreateEngine <IEmailFormattingEngine>().TestMe(input);
            input = AccessorFactory.CreateAccessor <IEmailAccessor>().TestMe(input);

            return(input);
        }
示例#15
0
        BackOffice.OrderDataResponse BackOffice.IBackOfficeRemittanceManager.Totals()
        {
            try
            {
                // authenticate the user as a seller
                if (UtilityFactory.CreateUtility <ISecurityUtility>().BackOfficeAdminAuthenticated())
                {
                    var sellerOrderData = AccessorFactory.CreateAccessor <IRemittanceAccessor>()
                                          .SalesTotal();

                    if (sellerOrderData != null && sellerOrderData.Length > 0)
                    {
                        var result = new BackOffice.OrderDataResponse();
                        var items  = new List <BackOffice.SellerOrderData>();

                        foreach (var item in sellerOrderData)
                        {
                            var mapped = DTOMapper.Map <BackOffice.SellerOrderData>(item);

                            var calcResult = EngineFactory.CreateEngine <IRemittanceCalculationEngine>()
                                             .CalculateFee(mapped.SellerId, mapped.OrderTotal);

                            mapped.FeeAmount        = calcResult.FeeAmount;
                            mapped.RemittanceAmount = calcResult.RemittanceAmount;

                            items.Add(mapped);
                        }

                        result.Success         = true;
                        result.SellerOrderData = items.ToArray();
                        return(result);
                    }
                    else
                    {
                        return(new BackOffice.OrderDataResponse()
                        {
                            Success = false,
                            Message = "No orders"
                        });
                    }
                }
                return(new BackOffice.OrderDataResponse()
                {
                    Success = false,
                    Message = "BackOfficeAdmin not authenticated"
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                return(new BackOffice.OrderDataResponse()
                {
                    Success = false,
                    Message = "There was a problem accessing sellers orders"
                });
            }
        }
示例#16
0
        private ITaxRateAccessor CreateAccessor()
        {
            var context = new Common.Contracts.AmbientContext();
            var factory = new AccessorFactory(
                context,
                new Utilities.UtilityFactory(context));

            return(factory.CreateAccessor <ITaxRateAccessor>());
        }
        public void InvalidAccessorType()
        {
            // Arrange
            IAccessorFactory factory = new AccessorFactory();

            // Act
            var accessor = factory.CreateAccessor <string>();

            // Assert
            // none - expect an exception to be thrown
        }
示例#18
0
 void Admin.IAdminCatalogManager.RebuildCatalog(int catalogId)
 {
     try
     {
         AccessorFactory.CreateAccessor <ISearchAccessor>().RebuildIndex(catalogId);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
     }
 }
示例#19
0
        //TODO: make this class private and implement an interface while still supporting unit testing and mocking
        public Product[] GetProductPricingUsingSearch(string brand, string productCode, string industryCode, bool useProxy, string connString)
        {
            // TODO: Need to refactor this so it is not so repetitive. Possibly pass in references to the engines and make the workflow here generic

            // TODO: Once we have searched and identified a product page url we should not need to search for subsequent price refreshes.
            // TODO: Consider breaking these calls out into discrete site-specific calls.
            var products = new List <Product>();

            // Get the amazon product pricing
            var pageEngine        = EngineFactory.CreateEngine <IWebPageEngine>();
            var amznSearchParser  = EngineFactory.CreateSiteEngine <ISearchLinkParserEngine>(WebstoreSite.Amazon);
            var amznProductParser = EngineFactory.CreateSiteEngine <IProductParserEngine>(WebstoreSite.Amazon);
            var productAccessor   = AccessorFactory.CreateAccessor <IProductAccessor>();

            string[] urls = amznSearchParser.GetProductUrls(pageEngine.GetWebPageContents(amznSearchParser.GetSearchUrl(brand, productCode, industryCode), useProxy));
            // NOTE: for Amazon we are assuming that if more than 1 result returned then exact match not found so skip
            if (urls.Length > 0)
            {
                // Assume the first product in the result is the product in question
                // TODO: make this a little more robust in handling multiple search results coming back
                var product = amznProductParser.GetProductInfo(pageEngine.GetWebPageContents(urls[0], useProxy), brand, productCode, industryCode);
                if (product != null)
                {
                    product.ProductUrl  = urls[0];
                    product.ProductCode = industryCode;
                    product.Brand       = brand;
                    products.Add(product);
                    productAccessor.Save(connString, product);
                }
            }

            // Get the amain product pricing
            var amainSearchParser  = EngineFactory.CreateSiteEngine <ISearchLinkParserEngine>(WebstoreSite.AMain);
            var amainProductParser = EngineFactory.CreateSiteEngine <IProductParserEngine>(WebstoreSite.AMain);

            urls = amainSearchParser.GetProductUrls(pageEngine.GetWebPageContents(amainSearchParser.GetSearchUrl(brand, productCode, industryCode), useProxy));
            if (urls.Length > 0)
            {
                // Assume the first product in the result is the product in question
                // TODO: make this a little more robust in handling multiple search results coming back
                var product = amainProductParser.GetProductInfo(pageEngine.GetWebPageContents(urls[0], useProxy), brand, productCode, industryCode);
                if (product != null)
                {
                    product.ProductUrl  = urls[0];
                    product.ProductCode = industryCode;
                    product.Brand       = brand;
                    products.Add(product);
                    productAccessor.Save(connString, product);
                }
            }

            return(products.ToArray());
        }
示例#20
0
        public Project Project(int id)
        {
            // this should load from the ProjectAccess service.
            var projectAccess = AccessorFactory.CreateAccessor <IProjectAccess>();
            var dbProject     = projectAccess.Project(id);

            // convert db project to client version

            var dbActivities = projectAccess.ActivitiesForProject(id);

            var clientProject = new Project();

            Activity[] clientActivities;

            if (dbActivities != null)
            {
                clientActivities = new Activity[dbActivities.Length];
                List <Activity> activitiesList = new List <Activity>();

                foreach (var serverActivity in dbActivities)
                {
                    Activity clientActivity = new Activity();
                    clientActivity.Id           = serverActivity.Id;
                    clientActivity.TaskName     = serverActivity.TaskName;
                    clientActivity.Estimate     = serverActivity.Estimate;
                    clientActivity.Predecessors = serverActivity.Predecessors;
                    clientActivity.Resource     = serverActivity.Resource;
                    clientActivity.Priority     = serverActivity.Priority;
                    clientActivity.Start        = serverActivity.Start;
                    clientActivity.Finish       = serverActivity.Finish;
                    activitiesList.Add(clientActivity);
                }

                for (int i = 0; i < activitiesList.Count; i++)
                {
                    clientActivities[i] = activitiesList[i];
                }
            }
            else
            {
                clientActivities = new Activity[0];
            }

            if (dbProject != null)
            {
                clientProject.Id         = dbProject.Id;
                clientProject.Name       = dbProject.Name;
                clientProject.Start      = dbProject.Start;
                clientProject.Activities = clientActivities;
            }

            return(clientProject);
        }
示例#21
0
        public void GetUserById_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            var    accessorFactory = new AccessorFactory();
            var    graphAccessor   = accessorFactory.CreateAccessor <IGraphAccessor>();
            string userId          = "be64b27b-59b6-43bb-a824-51c16d328ffb";

            // Act
            var result = graphAccessor.GetUserById(userId);

            // Assert
            Assert.Equal(expected: userId, actual: result.Id.ToString());
        }
示例#22
0
        public void GetUserByDisplayName_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            var    accessorFactory = new AccessorFactory();
            var    graphAccessor   = accessorFactory.CreateAccessor <IGraphAccessor>();
            string displayName     = "Fake.User";

            // Act
            var result = graphAccessor.GetUserByDisplayName(displayName);

            // Assert
            Assert.Equal(expected: displayName, actual: result.DisplayName);
        }
示例#23
0
        public void GetUserByEmail_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            var    accessorFactory = new AccessorFactory();
            var    graphAccessor   = accessorFactory.CreateAccessor <IGraphAccessor>();
            string email           = "*****@*****.**";

            // Act
            var result = graphAccessor.GetUserByEmail(email);

            // Assert
            Assert.Equal(expected: email, actual: result.EmailAddress);
        }
示例#24
0
        public void FindAllApplications_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            var accessorFactory      = new AccessorFactory();
            var applicationsAccessor = accessorFactory.CreateAccessor <IApplicationsAccessor>();
            var DatabaseMock         = new DatabaseMock();

            DatabaseMock.SeedDatabase();

            // Act
            var result = applicationsAccessor.FindAllApplications();

            // Assert
            Assert.NotEmpty(result);
        }
示例#25
0
        public void DeleteClaim_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            var accessorFactory = new AccessorFactory();
            var claimsAccessor  = accessorFactory.CreateAccessor <IClaimsAccessor>();
            var DatabaseMock    = new DatabaseMock();

            DatabaseMock.SeedDatabase();
            var claimId = DatabaseMock.GetId("claimId");

            // Act
            claimsAccessor.DeleteClaim(claimId);

            // Assert
            Assert.Null(claimsAccessor.Find(claimId));
        }
示例#26
0
        public void FindAllUserClaims_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            var accessorFactory    = new AccessorFactory();
            var userClaimsAccessor = accessorFactory.CreateAccessor <IUserClaimsAccessor>();
            var DatabaseMock       = new DatabaseMock();

            DatabaseMock.SeedDatabase();
            var userId = DatabaseMock.GetId("userId");

            // Act
            var result = userClaimsAccessor.FindAllUserClaims(userId);

            // Assert
            Assert.NotEmpty(result);
        }
示例#27
0
        public void FindAllUsersForApplication_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            var accessorFactory      = new AccessorFactory();
            var applicationsAccessor = accessorFactory.CreateAccessor <IApplicationsAccessor>();
            var DatabaseMock         = new DatabaseMock();

            DatabaseMock.SeedDatabase();
            string applicationName = DatabaseMock.GetValue("applicationName");

            // Act
            var result = applicationsAccessor.FindAllUsersForApplication(applicationName);

            // Assert
            Assert.NotEmpty(result);
        }
示例#28
0
        public void Find_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            var accessorFactory      = new AccessorFactory();
            var applicationsAccessor = accessorFactory.CreateAccessor <IApplicationsAccessor>();
            var DatabaseMock         = new DatabaseMock();

            DatabaseMock.SeedDatabase();
            var applicationId = DatabaseMock.GetId("applicationId");

            // Act
            var result = applicationsAccessor.Find(applicationId);

            // Assert
            Assert.Equal(expected: applicationId, actual: result.Id);
        }
示例#29
0
        public void DeleteApplication_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            var accessorFactory      = new AccessorFactory();
            var applicationsAccessor = accessorFactory.CreateAccessor <IApplicationsAccessor>();
            var DatabaseMock         = new DatabaseMock();

            DatabaseMock.SeedDatabase();
            var applicationId = DatabaseMock.GetId("applicationId");

            // Act
            applicationsAccessor.DeleteApplication(applicationId);

            // Assert
            Assert.Null(applicationsAccessor.Find(applicationId));
        }
示例#30
0
        WebStore.WebStoreCatalogResponse WebStore.IWebStoreCatalogManager.ShowCatalog(int catalogId)
        {
            try
            {
                // Get the webstore catalog
                WebStore.WebStoreCatalog result          = new WebStore.WebStoreCatalog();
                ICatalogAccessor         catalogAccessor = AccessorFactory.CreateAccessor <ICatalogAccessor>();
                DTO.WebStoreCatalog      accCatalog      = catalogAccessor.Find(catalogId);

                // Get the webstore catalog products
                if (accCatalog != null)
                {
                    DTOMapper.Map(accCatalog, result);

                    DTO.Product[] catalogProducts = catalogAccessor.FindAllProductsForCatalog(catalogId);
                    List <WebStore.ProductSummary> productList = new List <WebStore.ProductSummary>();

                    foreach (var catalogProduct in catalogProducts)
                    {
                        WebStore.ProductSummary product = new WebStore.ProductSummary();
                        DTOMapper.Map(catalogProduct, product);
                        productList.Add(product);
                    }
                    result.Products = productList.ToArray();

                    return(new WebStore.WebStoreCatalogResponse()
                    {
                        Success = true,
                        Catalog = result
                    });
                }
                return(new WebStore.WebStoreCatalogResponse()
                {
                    Success = false,
                    Message = "Catalog not found"
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                return(new WebStore.WebStoreCatalogResponse()
                {
                    Success = false,
                    Message = "There was a problem accessing the catalog"
                });
            }
        }