/// <summary> /// Populate DB with currencies. /// </summary> /// <param name="context"> /// The context. /// </param> public static void Populate(ShopAnyWareSql context) { context.Currencies.Add( new Currency { AlphabeticCode = "USD", Entity = "UNITED STATES", Name = "US Dollar", NumericCode = "840", MinorUnit = 2 }); context.Currencies.Add( new Currency { AlphabeticCode = "EUR", Entity = "Europa", Name = "Euro", NumericCode = "978", MinorUnit = 2 }); context.Currencies.Add( new Currency { AlphabeticCode = "RUB", Entity = "RUSSIAN FEDERATION", Name = "Russian Ruble", NumericCode = "643", MinorUnit = 2 }); context.SaveChanges(); }
public void GivenThereIsAccountWithPasswordInRoleWithFullnameAnd( string email, string password, string roleName, string firstName, string lastName) { Mapper.AssertConfigurationIsValid(); using (var context = new ShopAnyWareSql()) { var user = context.Users.Include("Profile").Include("Wallet").Include("Roles").SingleOrDefault(u => u.Email == email); if (user != null) { context.Users.Remove(user); context.SaveChanges(); } var role = context.Roles.SingleOrDefault(r => r.Name == roleName) ?? context.Roles.Add(new Role { Name = roleName }); var profile = new Profile { FirstName = firstName, LastName = lastName }; context.Profiles.Add(profile); user = new User { Email = email, Password = password, Profile = profile, Wallet = new Wallet { Amount = 0m }, Roles = new List<Role> { role } }; context.Users.Add(user); context.SaveChanges(); ScenarioContext.Current.Set(user); } }
/// <summary> /// Get item by Id. /// </summary> /// <param name="itemId"> /// The item Id. /// </param> /// <returns> /// The item. /// </returns> public Item GetItemById(int itemId) { using (var context = new ShopAnyWareSql()) { return context.ItemsWithImages().SingleOrDefault(item => item.Id.Equals(itemId)); } }
public void WhenIAddTheFollowingItemsToOrder(string orderNumber, Table table) { using (var context = new ShopAnyWareSql()) { var order = context.Orders.SingleOrDefault(o => o.OrderNumber.Equals(orderNumber)); Assert.IsNotNull(order); var contoller = this.GetItemsController(); var itemViewModels = table.CreateSet<OrderItemViewModel>(); var actuals = new List<OrderItemViewModel>(); foreach (var itemViewModel in itemViewModels) { itemViewModel.OrderId = order.Id; var result = contoller.AddItemToOrder(itemViewModel) as JsonNetResult; Assert.That(result, Is.Not.Null); if (result == null) { continue; } var actual = result.Data as OrderItemViewModel; actuals.Add(actual); } ScenarioContext.Current.Set(actuals); } }
/// <summary> /// Get the list of order's products. /// </summary> /// <param name="orderId"> /// The order id. /// </param> /// <returns> /// Collection of items. /// </returns> public List<Item> GetOrderItems(int orderId) { using (var context = new ShopAnyWareSql()) { var order = context.OrdersWithItemsAndImages().SingleOrDefault(o => o.Id == orderId); return order != null ? order.ItemsNotInPackage : null; } }
/// <summary> /// Get package items. /// </summary> /// <param name="packageId"> /// The package id. /// </param> /// <returns> /// Collection of package items. /// </returns> public List<Item> GetPackageItems(int packageId) { using (var context = new ShopAnyWareSql()) { var package = context.PackagesWithItemsAndImages().SingleOrDefault(p => p.Id == packageId); return package != null ? package.Items : null; } }
/// <summary> /// Get user's delivery address details. /// </summary> /// <param name="addressId"> /// The address id. /// </param> /// <returns> /// User's delivery address details. /// </returns> public DeliveryAddress GetDeliveryAddressDetails(int addressId) { using (var context = new ShopAnyWareSql()) { return context.DeliveryAddresses.Include(ad => ad.Country) .SingleOrDefault(ad => ad.Id.Equals(addressId)); } }
/// <summary> /// Populate DB with retailers. /// </summary> /// <param name="context"> /// The context. /// </param> /// <param name="fileStorage"> /// The file storage. /// </param> public static void Populate(ShopAnyWareSql context, IFileStorage fileStorage) { var path = fileStorage.MapPath("~/App_Data/retailers.xls"); var retailersExcel = ExcelHelper.LoadRetailersFromExcelFile(path); var retailers = retailersExcel.Select(r => new Retailer(r.Url)).ToList(); var retailers2 = retailers.Where(r => string.IsNullOrWhiteSpace(r.Url) == false).ToList(); retailers2.ForEach(r => context.Retailers.Add(r)); context.SaveChanges(); }
/// <summary> /// The get transactions for user. /// </summary> /// <param name="email"> /// The email. /// </param> /// <returns> /// Collection of transactions. /// </returns> public List<Transaction> GetTransactionsForUser(string email) { using (var context = new ShopAnyWareSql()) { var user = context.Users.Include("Wallet.Transactions").Single(u => u.Email.Equals(email)); return user.Wallet.Transactions; } }
/// <summary> /// The add transaction. /// </summary> /// <param name="transaction"> /// The transaction. /// </param> /// <returns> /// The <see cref="Transaction"/>. /// </returns> public Transaction AddTransaction(Transaction transaction) { using (var context = new ShopAnyWareSql()) { var result = context.Transactions.Add(transaction); context.SaveChanges(); return result; } }
/// <summary> /// The get all received orders paged. /// </summary> /// <param name="skip"> /// The skip. /// </param> /// <param name="take"> /// The take. /// </param> /// <returns> /// The collection of orders. /// </returns> public List<Order> GetAllReceivedOrdersPaged(int skip, int take) { using (var context = new ShopAnyWareSql()) { var query = context.Orders.Where(o => o.Status == OrderStatus.Received) .OrderByDescending(o => o.CreatedDate); return query.Skip(skip).Take(take).ToList(); } }
/// <summary> /// Get order details. /// </summary> /// <param name="orderId"> /// The order id. /// </param> /// <returns> /// Order details. /// </returns> public Order GetOrderById(int orderId) { using (var context = new ShopAnyWareSql()) { return context.Orders.Include(o => o.User.Profile) .Include(o => o.Retailer) .SingleOrDefault(o => o.Id.Equals(orderId)); } }
public static void BeforeEachScenario() { using (var context = new ShopAnyWareSql()) { if (context.Database.Exists()) { context.Database.Delete(); } context.Database.Initialize(true); context.Database.CreateIfNotExists(); } }
/// <summary> /// Get the list of user's addresses. /// </summary> /// <param name="email"> /// The email. /// </param> /// <returns> /// Collection of user's addresses. /// </returns> public List<DeliveryAddress> GetDeliveryAddresses(string email) { if (email == null) { throw new ArgumentNullException("email"); } using (var context = new ShopAnyWareSql()) { var user = context.Users.SingleOrDefault(u => u.Email == email); var addr = context.DeliveryAddresses.Include(da => da.Country).Where(da => da.UserId.Equals(user.Id)); return addr.ToList(); } }
public static void BeforeMembershipScenarios() { var context = new ShopAnyWareSql(); var userRepository = new UserRepository(context); var roleRepository = new RoleRepository(context); var profileRepository = new ProfileRepository(context); var membershipRepository = new MembershipRepository(); var logger = new FakeLogger(); var emailService = new FakeEmailService(); ScenarioContext.Current.Set(emailService); var membershipService = new MembershipService(logger, emailService, userRepository, roleRepository, profileRepository, membershipRepository); ScenarioContext.Current.Set(membershipService); }
/// <summary> /// Confirms transaction. /// </summary> /// <param name="token">token from PP API</param> /// <param name="payerId">payerId from PP API</param> public void ConfirmTransaction(string token, string payerId) { using (var context = new ShopAnyWareSql()) { var tran = context.Transactions.SingleOrDefault(t => t.Token.Equals(token)); if (tran == null) { throw new InvalidOperationException("Transaction Not Found"); } tran.TransactionStatus = TransactionStatus.Approved; tran.PayerId = payerId; context.Wallets.Find(tran.WalletId).Amount += tran.OperationAmount; context.SaveChanges(); } }
/// <summary> /// Populate database with few orders. /// </summary> /// <param name="context"> /// Shop any ware context. /// </param> public static void Populate(ShopAnyWareSql context) { var user = context.Users.SingleOrDefault(u => u.Email == "*****@*****.**"); var retailer = context.Retailers.Find(1); if (user != null) { user.Orders = new List<Order> { new Order(OrderStatus.New) { Retailer = retailer, CreatedDate = DateTime.UtcNow }, new Order(OrderStatus.Received) { Retailer = retailer, CreatedDate = DateTime.UtcNow.AddDays(-5), ReceivedDate = DateTime.UtcNow.AddHours(-3) } }; } context.SaveChanges(); }
/// <summary> /// The cancel transaction. /// </summary> /// <param name="token"> /// The token. /// </param> /// <exception cref="InvalidOperationException"> /// Transaction can not be found. /// </exception> public void CancelTransaction(string token) { using (var context = new ShopAnyWareSql()) { var tran = context.Transactions.SingleOrDefault(t => t.Token.Equals(token)); if (tran == null) { throw new InvalidOperationException("Transaction Not Found"); } tran.TransactionStatus = TransactionStatus.Canceled; context.SaveChanges(); } }
/// <summary> /// The add package payment transaction. /// </summary> /// <param name="packageId"> /// The package id. /// </param> /// <returns> /// The <see cref="Tuple"/>. /// </returns> /// <exception cref="InvalidOperationException"> /// Balance cannot be negative. /// </exception> public Tuple<Package, decimal> AddPackagePaymentTransaction(int packageId) { using (var context = new ShopAnyWareSql()) { var package = context.PackagesWithUserAndWallet().Single(p => p.Id.Equals(packageId)); var newTransaction = Transaction.CreatePackagePaymentTransaction(package); var wallet = package.User.Wallet; wallet.PackagePayment(newTransaction.OperationAmount); var brokenRules = wallet.GetBrokenRules(); if (brokenRules.Any()) { throw new InvalidOperationException("Wallet amount can't be negative"); } package.ChangePackageStatus(PackageStatus.Paid); context.Packages.Attach(package); context.Entry(package).State = System.Data.EntityState.Modified; context.Transactions.Add(newTransaction); context.SaveChanges(); return new Tuple<Package, decimal>(package, wallet.Amount); } }
/// <summary> /// Gets a list of all the roles for the configured applicationName. /// </summary> /// <returns> /// A string array containing the names of all the roles stored in the data source for the configured applicationName. /// </returns> public override string[] GetAllRoles() { using (var context = new ShopAnyWareSql()) { var roles = context.Roles.ToList(); return roles.Select(role => role.Name).ToArray(); } }
/// <summary> /// Detach item from package. /// </summary> /// <param name="packageId"> /// The package Id. /// </param> /// <param name="itemId"> /// The item Id. /// </param> public void DetachItemFromPackage(int packageId, int itemId) { using (var context = new ShopAnyWareSql()) { var package = context.PackagesWithItems().SingleOrDefault(p => p.Id == packageId); if (package != null) { var itemToDetach = package.Items.SingleOrDefault(i => i.Id == itemId); if (itemToDetach != null) { package.Items.Remove(itemToDetach); context.SaveChanges(); } } } }
/// <summary> /// Add item to an order. /// </summary> /// <param name="orderId"> /// The order id. /// </param> /// <param name="item"> /// The item. /// </param> /// <returns> /// The TdService.Model.Items.Item. /// </returns> public Item AddItemToOrder(int orderId, Item item) { using (var context = new ShopAnyWareSql()) { var newItem = context.Items.Add(item); var order = context.OrdersWithItems().SingleOrDefault(o => o.Id == orderId); if (order != null) { if (order.Items == null) { order.Items = new List<Item>(); } order.Items.Add(newItem); context.SaveChanges(); } return newItem; } }
/// <summary> /// Gets an array of user names in a role where the user name contains the specified user name to match. /// </summary> /// <returns> /// A string array containing the names of all the users where the user name matches <paramref name="usernameToMatch"/> and the user is a member of the specified role. /// </returns> /// <param name="roleName">The role to search in.</param><param name="usernameToMatch">The user name to search for.</param> public override string[] FindUsersInRole(string roleName, string usernameToMatch) { using (var context = new ShopAnyWareSql()) { var role = context.Roles.SingleOrDefault(r => r.Name == roleName); if (role != null) { var users = from user in role.Users where user.Email.Contains(usernameToMatch) select user.Email; return users.ToArray(); } } return new string[] { }; }
/// <summary> /// Gets a value indicating whether the specified user is in the specified role for the configured applicationName. /// </summary> /// <returns> /// true if the specified user is in the specified role for the configured applicationName; otherwise, false. /// </returns> /// <param name="username">The user name to search for.</param><param name="roleName">The role to search in.</param> public override bool IsUserInRole(string username, string roleName) { using (var context = new ShopAnyWareSql()) { var user = context.Users.Include("Profile").Include("Roles").SingleOrDefault(u => u.Email == username); return user != null && user.Roles.Any(r => r.Name == roleName); } }
/// <summary> /// Adds image to item /// </summary> /// <param name="itemId"> /// The item Id. /// </param> /// <param name="image"> /// The image. /// </param> public void AddImageToItem(int itemId, ItemImage image) { using (var context = new ShopAnyWareSql()) { var item = context.ItemsWithImages().SingleOrDefault(i => i.Id.Equals(itemId)); if (item != null) { item.Images.Add(image); } context.SaveChanges(); } }
/// <summary> /// Remove item completely. /// </summary> /// <param name="itemId"> /// The item id. /// </param> /// <returns> /// The <see cref="Item"/>. /// </returns> public Item RemoveItem(int itemId) { using (var context = new ShopAnyWareSql()) { var item = context.Items.Find(itemId); var removedItem = context.Items.Remove(item); context.SaveChanges(); return removedItem; } }
/// <summary> /// Initializes a new instance of the <see cref="RetailerRepository"/> class. /// </summary> /// <param name="context"> /// The context. /// </param> public RetailerRepository(ShopAnyWareSql context) { this.context = context; }
/// <summary> /// Populate users. /// </summary> /// <param name="context"> /// The context. /// </param> public static void Populate(ShopAnyWareSql context) { var adminRole = new Role { Name = "Admin", Description = "System Administrator" }; var shopperRole = new Role { Name = "Shopper", Description = "Main user of the system" }; var operatorRole = new Role { Name = "Operator", Description = "Person who process orders" }; var consultantRole = new Role { Name = "Consultant", Description = "Person who help user to solve service issues" }; context.Roles.Add(adminRole); context.Roles.Add(shopperRole); context.Roles.Add(operatorRole); context.Roles.Add(consultantRole); context.SaveChanges(); // vitali var profile = new Profile { FirstName = "Vitali", LastName = "Hatalski", UserCulture = "en", NotifyOnOrderStatusChanged = true, NotifyOnPackageStatusChanged = true }; context.Profiles.Add(profile); context.SaveChanges(); var user = new User { Email = "*****@*****.**", Password = PasswordHash.CreateHash("ruinruin"), Profile = profile, Roles = new List<Role> { adminRole, shopperRole, operatorRole }, Wallet = new Wallet { Amount = 0.00m }, Activated = true }; context.Users.Add(user); context.SaveChanges(); // oleg var profileOleg = new Profile { FirstName = "Oleg", LastName = "Voronin", NotifyOnOrderStatusChanged = true, NotifyOnPackageStatusChanged = true }; context.Profiles.Add(profileOleg); context.SaveChanges(); var userOleg = new User { Email = "*****@*****.**", Password = PasswordHash.CreateHash("1234567"), Roles = new List<Role> { adminRole }, Wallet = new Wallet { Amount = 0.00m }, Profile = profileOleg, ActivationCode = Guid.NewGuid(), Activated = true }; context.Users.Add(userOleg); context.SaveChanges(); // shopper var profileShopper = new Profile { FirstName = "Shopper First name", LastName = "Shopper Last name", NotifyOnOrderStatusChanged = true, NotifyOnPackageStatusChanged = true }; context.Profiles.Add(profileShopper); context.SaveChanges(); var shopper = new User { Email = "*****@*****.**", Password = PasswordHash.CreateHash("1111111111"), Profile = profileShopper, Roles = new List<Role> { shopperRole }, Wallet = new Wallet { Amount = 0.00m }, ActivationCode = Guid.NewGuid(), Activated = true }; context.Users.Add(shopper); context.SaveChanges(); // operator var profileOperator = new Profile { FirstName = "Operator First name", LastName = "Operator Last name", NotifyOnOrderStatusChanged = true, NotifyOnPackageStatusChanged = true }; context.Profiles.Add(profileOperator); context.SaveChanges(); var operatorUser = new User { Email = "*****@*****.**", Password = PasswordHash.CreateHash("1111111111"), Profile = profileOperator, Roles = new List<Role> { operatorRole }, Wallet = new Wallet { Amount = 0.00m }, ActivationCode = Guid.NewGuid(), Activated = true }; context.Users.Add(operatorUser); context.SaveChanges(); // consultant var profileConsultant = new Profile { FirstName = "Consultant First name", LastName = "Consultant Last name", NotifyOnOrderStatusChanged = true, NotifyOnPackageStatusChanged = true }; context.Profiles.Add(profileConsultant); context.SaveChanges(); var consultant = new User { Email = "*****@*****.**", Password = PasswordHash.CreateHash("1111111111"), Profile = profileConsultant, Roles = new List<Role> { consultantRole }, Wallet = new Wallet { Amount = 0.00m }, ActivationCode = Guid.NewGuid(), Activated = true }; context.Users.Add(consultant); context.SaveChanges(); // consultant var profileKotg = new Profile { FirstName = "Kotg First name", LastName = "Kotg Last name", NotifyOnOrderStatusChanged = true, NotifyOnPackageStatusChanged = true }; context.Profiles.Add(profileKotg); context.SaveChanges(); var kotg = new User { Email = "*****@*****.**", Password = PasswordHash.CreateHash("2320244"), Profile = profileKotg, Roles = new List<Role> { adminRole, shopperRole, operatorRole }, Wallet = new Wallet { Amount = 0 }, Activated = true }; context.Users.Add(kotg); context.SaveChanges(); for (var i = 0; i < 100; i++) { var pwd = PasswordHash.CreateHash("111111"); var s = i.ToString(CultureInfo.InvariantCulture); var bulkProfile = new Profile { FirstName = "First Name " + s, LastName = "Last name " + s, NotifyOnOrderStatusChanged = true, NotifyOnPackageStatusChanged = true }; context.Profiles.Add(bulkProfile); context.SaveChanges(); var bulkUser = new User { Email = string.Format("user{0}@gmail.com", s), Password = pwd, Profile = bulkProfile, Roles = new List<Role> { shopperRole }, Wallet = new Wallet { Amount = 500 }, Activated = true }; context.Users.Add(bulkUser); context.SaveChanges(); } }
/// <summary> /// Update item. /// </summary> /// <param name="item"> /// The item. /// </param> public void UpdateItem(Item item) { using (var context = new ShopAnyWareSql()) { context.Entry(item).State = EntityState.Modified; context.SaveChanges(); } }
/// <summary> /// Attach item to package. /// </summary> /// <param name="packageId"> /// The package id. /// </param> /// <param name="itemId"> /// The item id to attach. /// </param> public void AttachItemToPackage(int packageId, int itemId) { using (var context = new ShopAnyWareSql()) { var item = context.Items.Find(itemId); var package = context.PackagesWithItems().SingleOrDefault(p => p.Id == packageId); if (package != null) { package.Items.Add(item); context.SaveChanges(); } } }