protected void UserProductMapDetailUpdate_Click(object sender, EventArgs e) { System.Diagnostics.Debug.WriteLine(UsrProdNewMapValues); SimplicityEntities DatabaseContext = new SimplicityEntities(); int companyId = company.CompanyID; String [] selectedUsersAndProds = UsrProdNewMapValues.Value.Split(','); int totalSelectedUsersAndProducts = selectedUsersAndProds.Length; Dictionary<int, List<int>> usersGroupByProduct = new Dictionary<int, List<int>>(); for (int i = 0; i < totalSelectedUsersAndProducts - 1; i++) { String[] parsedId = selectedUsersAndProds[i].Split('_'); int userId = Int32.Parse(parsedId[2]); int prodId = Int32.Parse(parsedId[3]); if (usersGroupByProduct.ContainsKey(prodId) == false) { List<int> usersOfSameProduct = new List<int>(); usersGroupByProduct.Add(prodId, usersOfSameProduct); } List<int> usersOfSameProductValue = null; if (usersGroupByProduct.TryGetValue(prodId, out usersOfSameProductValue) == true) usersOfSameProductValue.Add(userId); } List<int> allCompanyProds = company.CompanyProducts.Select(cmpProd => cmpProd.ProductID).ToList(); foreach (int prodId in allCompanyProds) { if (usersGroupByProduct.ContainsKey(prodId) == true) { List<int> usersOfSameProduct = usersGroupByProduct[prodId]; var userUsingProductID = from usrProd in DatabaseContext.UserProducts where usrProd.User.CompanyID == companyId && usrProd.ProductID == prodId && usrProd.IsTrial == false select usrProd; var userIdOdUsersUsingProductID = userUsingProductID.Select(users => users.UserID); var myUsers = userIdOdUsersUsingProductID.Except(usersOfSameProduct); if (myUsers != null && myUsers.Count() > 0) { var usersToDelete = userUsingProductID.Where(usersOfProduct => myUsers.Where(usr => usr == usersOfProduct.UserID).Any());// usersOfProduct.UserID == myUsers); foreach (UserProduct userProduct in usersToDelete) DatabaseContext.UserProducts.DeleteObject(userProduct); } } else { var companyUsersUsingProduct = from usrProd in DatabaseContext.UserProducts where usrProd.User.CompanyID == companyId && usrProd.ProductID == prodId && usrProd.IsTrial == false select usrProd; foreach (UserProduct userProduct in companyUsersUsingProduct) DatabaseContext.UserProducts.DeleteObject(userProduct); }//if there is only one user using the product and admin removes it. }//remove users using the products first so licences can be made available to other users. DatabaseContext.SaveChanges(); foreach (int prodId in usersGroupByProduct.Keys) { int noOfLicencesForProduct = 0; var userUsingProduct = from usrProd in DatabaseContext.UserProducts where usrProd.User.CompanyID == companyId && usrProd.ProductID == prodId && usrProd.IsTrial == false select usrProd; var companyProd = company.CompanyProducts.Where(compProd => compProd.ProductID == prodId); List<int> newUsersUsingProduct = usersGroupByProduct[prodId]; foreach (int userId in newUsersUsingProduct) { var usrProd = userUsingProduct.Where(usrExist => usrExist.UserID == userId); if (usrProd != null && usrProd.Count() > 0) { continue; } else { if (companyProd != null) { foreach (Simplicity.Data.CompanyProduct companyProduct in companyProd) { UserProduct newUsrOfProd = null; noOfLicencesForProduct = companyProduct.NumOfLicenses; if (userUsingProduct.Count() < noOfLicencesForProduct) { newUsrOfProd = new UserProduct(); newUsrOfProd.UserID = userId; newUsrOfProd.ProductID = prodId; newUsrOfProd.IsTrial = false; newUsrOfProd.StartDate = DateTime.Now; newUsrOfProd.EndDate = DateTime.Now.AddYears(1); DatabaseContext.UserProducts.AddObject(newUsrOfProd); DatabaseContext.SaveChanges(); } else { SetErrorMessage("No. of users are greater than No. of Licenses for " + companyProduct.Product.Name); } break; }//there should be only one product. So loop will run only once. } } } } DatabaseContext.Dispose(); updateUserProdMapTable(); }
/// <summary> /// Deprecated Method for adding a new object to the UserProducts EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToUserProducts(UserProduct userProduct) { base.AddObject("UserProducts", userProduct); }
/// <summary> /// Create a new UserProduct object. /// </summary> /// <param name="userID">Initial value of the UserID property.</param> /// <param name="productID">Initial value of the ProductID property.</param> /// <param name="isTrial">Initial value of the IsTrial property.</param> /// <param name="startDate">Initial value of the StartDate property.</param> /// <param name="endDate">Initial value of the EndDate property.</param> public static UserProduct CreateUserProduct(global::System.Int32 userID, global::System.Int32 productID, global::System.Boolean isTrial, global::System.DateTime startDate, global::System.DateTime endDate) { UserProduct userProduct = new UserProduct(); userProduct.UserID = userID; userProduct.ProductID = productID; userProduct.IsTrial = isTrial; userProduct.StartDate = startDate; userProduct.EndDate = endDate; return userProduct; }
private void UpdateTrialLicense() { CompanyTableAdapters.un_co_detailsTableAdapter compTA = new CompanyTableAdapters.un_co_detailsTableAdapter(); if (Session[WebConstants.Session.REGISTERING_FOR_TRIAL] != null) { compTA.CompanyTrialUpdate((int)Session[WebConstants.Session.SIMPLICITY_COMPANY_ID], true); Simplicity.Data.SimplicityEntities simplicityDatabaseContext = new Simplicity.Data.SimplicityEntities(); int userId = (int)Session[WebConstants.Session.SIMPLICITY_USER_ID]; Simplicity.Data.UserProduct userProduct = (from userProd in simplicityDatabaseContext.UserProducts where userProd.ProductID == 2 && userProd.UserID == userId select userProd).FirstOrDefault(); if (userProduct == null) { userProduct = new Simplicity.Data.UserProduct(); userProduct.UserID = userId; userProduct.ProductID = 2; simplicityDatabaseContext.AddToUserProducts(userProduct); } userProduct.IsTrial = true; userProduct.StartDate = DateTime.Now; userProduct.EndDate = DateTime.Now.AddDays(15); simplicityDatabaseContext.SaveChanges(); } else { compTA.CompanyTrialUpdate((int)Session[WebConstants.Session.SIMPLICITY_COMPANY_ID], false); } }