public void PersistNewItem_Entity_Persisted() { var entity = new StubEntity(); entity.Date = DateTime.Now; entity.Integer = 2; entity.Text1 = "text1"; entity.Text2 = "text2"; entity.Text3 = "text3"; var unitOfWork = new MemoryUnitOfWork(); var target = new ParseRepository<StubEntity>(unitOfWork); target.Add(entity); unitOfWork.Commit(); }
public void FindAll_Filter_EntitiesFiltered() { var unitOfWork = new MemoryUnitOfWork(); var target = new ParseRepository<StubEntity>(unitOfWork); foreach (var toRemove in target.FindAll()) { target.Remove(toRemove); unitOfWork.Commit(); } var entity1 = new StubEntity(); entity1.Date = DateTime.Now; entity1.Text1 = "text1"; entity1.Text2 = "text2"; entity1.Text3 = "text3"; var entity2 = new StubEntity(); entity2.Date = DateTime.Now; entity2.Text1 = "text1"; entity2.Text2 = "text2"; entity2.Text3 = "text4"; target.Add(entity1); target.Add(entity2); unitOfWork.Commit(); var text1 = "text1"; var actual = target.FindAll(0, 1, (b) => b.Text1 == text1 && b.Text2 == "text2" && b.Text3 == "text3"); Assert.AreEqual(1, actual.Count()); var first = actual.First(); Assert.AreEqual("text3", first.Text3); actual = target.FindAll(0, 1, (b) => b.Text1 == text1 && b.Text2 == "text2" && b.Text3 == "text4"); Assert.AreEqual(1, actual.Count()); first = actual.First(); Assert.AreEqual("text4", first.Text3); first = target.FindFirst((b) => b.Text1 == text1 && b.Text2 == "text2" && b.Text3 == "text3"); Assert.AreEqual("text3", first.Text3); }
private UserAdminData UpdateUserPurchasesCount(ParseRepository repository, ShoppoingCartItemModel cartItemModel) { var currentUser = Session.GetLoggedInUser(); // var itemCount = repository.FindUserPurchases(currentUser.ObjectId).Count(); var adminData = currentUser.GetPointerObject<UserAdminData>("adminData"); adminData.PurchaseCount = adminData.PurchaseCount + 1; //Task.Run(() => adminData.SaveAsync()).Wait(); Session.SetLoggedInUser(currentUser); cartItemModel.UserPurchaseCount = adminData.PurchaseCount; return adminData; }
/// <summary> /// /// </summary> /// <param name="cartItemModel"></param> /// <param name="contentItem"></param> /// <param name="repository"></param> /// <param name="purchase"></param> /// <param name="existingPurchase"></param> /// <returns>update shopping cart</returns> private Purchase AddToCartInternal(ShoppoingCartItemModel cartItemModel, ParseObject contentItem, ParseRepository repository, Purchase existingPurchase, string previosDemoId) { var currentUser = Session.GetLoggedInUser(); var isLessson = cartItemModel.ContentItemType.Contains("lesson"); var isDemo = cartItemModel.ContentItemType.Contains("demo"); var includingSupport = cartItemModel.ContentItemType.Contains("support"); var defaultCurrency = repository.FindDefaultCurrency(); var worldRetriever = new WorldContentTypeRetriver(HttpContext, repository); CurrencyDto contentItemCurrency = null; CurrencyDto userCurrency = null; userCurrency = Task.Run(() => currentUser.GetPointerObject<Currency>("currency")).Result.ConvertToCurrencyDto(); float contentItemPrice; float contentItemSupportPrice; string purchaseStatusCode; var clips = new List<string>(); string clipId = "1"; string bundleId = ""; string objectId = ""; if (isLessson) { var clip = (Clip)contentItem; var isAdminOrCurrenctUser = clip.Teacher.ObjectId == currentUser.ObjectId || Session.GetLoggedInUserRoleName() == RoleNames.ADMINISTRATORS; clipId = clip.ObjectId; contentItemCurrency = clip.Currency.ConvertToCurrencyDto(); contentItemPrice = clip.Price; contentItemSupportPrice = includingSupport ? clip.SupportPrice : 0; purchaseStatusCode = isAdminOrCurrenctUser ? PurchaseStatusCodes.LessonIsActive : PurchaseStatusCodes.LessonIsInBaskert; } else { var bundle = (Bundle)contentItem; bundleId = bundle.ObjectId; contentItemCurrency = bundle.Currency.ConvertToCurrencyDto(); contentItemPrice = bundle.Price; contentItemSupportPrice = includingSupport ? bundle.SupportPrice : 0; purchaseStatusCode = PurchaseStatusCodes.PackageIsInBasket; clips = bundle.ClipsInBundle.Select(x => x.ObjectId).ToList(); } PurchaseDto purchaseDto = null; if (isDemo) { purchaseDto = new PurchaseDto { ObjectId = existingPurchase != null ? existingPurchase.ObjectId : null, ClipId = clipId, BundleId = bundleId, ClipKind = ClipPurchaseTypes.Demo, PurchaseStatusCode = PurchaseStatusCodes.DemoOrdered, PurchaseStatusDate = DateTime.Now, UserKey = currentUser.ObjectId, WorldId = worldRetriever.GetWorldContentTypeId() }; } else { if (!string.IsNullOrEmpty(previosDemoId)) { objectId = previosDemoId; } if (existingPurchase != null) { objectId = existingPurchase.ObjectId; } purchaseDto = new PurchaseDto { ObjectId = objectId, ClipId = clipId, BundleId = bundleId, ClipKind = isLessson ? ClipPurchaseTypes.Lesson : ClipPurchaseTypes.Bundle, UserCurrencyId = currentUser.GetPointerObjectId("currency"), Price = CurrencyConverter.Convert(contentItemPrice, contentItemCurrency, userCurrency), PriceNIS = CurrencyConverter.Convert(contentItemPrice, contentItemCurrency, defaultCurrency), OriginalItemPrice = contentItemPrice, OriginalItemCurrency = contentItemCurrency.ObjectId, PurchaseStatusCode = purchaseStatusCode, PurchaseStatusDate = DateTime.Now, SupportPrice = CurrencyConverter.Convert(contentItemSupportPrice, contentItemCurrency, userCurrency), SupportPriceNIS = CurrencyConverter.Convert(contentItemSupportPrice, contentItemCurrency, defaultCurrency), OriginalSupportPrice = contentItemSupportPrice, UserKey = currentUser.ObjectId, WorldId = worldRetriever.GetWorldContentTypeId(), ClipIds = clips.ToArray(), IncludingSupport = includingSupport }; } // repository.AddPurchase(purchaseDto); return purchaseDto.ConvertToDomain(); }
private bool EnsurePurchaseFor(string purchaseFor, ParseRepository repository) { var parseUserDto = Task.Run(() => repository.FindUserByUserName(purchaseFor)).Result; return parseUserDto != null; }
public ActionResult UpdateStudent() { // await ParseUser.LogInAsync("*****@*****.**", "123456"); ParseUser user = Session.GetLoggedInUser(); StudentDetailsViewModel model = new StudentDetailsViewModel(); ViewBag.IsAdmin = (user != null && !string.IsNullOrEmpty(Session.GetImpersonatingUserName())) || Session.GetLoggedInUserRoleName() == RoleNames.ADMINISTRATORS; if (user == null) return RedirectToAction("Login"); var repository = new ParseRepository(new WebCacheProvider(HttpContext.ApplicationInstance.Context)); var worldContentTypeRetriever = new WorldContentTypeRetriver(HttpContext, repository); var contentTypes = worldContentTypeRetriever.GetContentTypes(user, Session.GetLoggedInUserRoleName()); var currencies = repository.FindCurrencies(); var uiLanguages = repository.FindInterfaceLanguages(); IEnumerable<UserGroup> groups = ( repository.FindGroups()).ToArray(); IEnumerable<UserGroup> subGroups = ( repository.FindSubGroups()).ToArray(); var sugLessonPublishingStatus = repository.FindUserPublishingStatus(); var userStatuses = repository.FindUserStatus(); model.DeviceTypes = repository.FindDeviceTypes(); model.Countries = repository.FindCountries(); model.UserPrefferences.ContentTypes = contentTypes; model.UserPrefferences.Currencies = currencies; model.UserPrefferences.Languages = uiLanguages; model.Groups = groups; model.SubGroups = subGroups; model.SugLessonPublishingStatus = sugLessonPublishingStatus; model.UserStatusValues = userStatuses; model.FirstName = user.GetString("firstName_he_il");// user.Keys.Contains("firstName") ? user["firstName"] as string : string.Empty; model.LastName = user.GetString("lastName_he_il");// user.Keys.Contains("lastName") ? user["lastName"] as string : string.Empty; model.Email = user.Keys.Contains("email") ? user["email"] as string : string.Empty; model.Phone = user.Keys.Contains("phoneNumber") ? user["phoneNumber"] as string : string.Empty; model.Email = user.Keys.Contains("email") ? user["email"] as string : string.Empty; model.MailRecipientAddress = user.GetString("mailRecipientAddress"); model.UserPrefferences.SelectedContentType = user.GetPointerObjectId("contentType"); model.UserPrefferences.SelectedCurrency = user.GetPointerObjectId("currency"); model.UserPrefferences.SelectedLanguage = user.GetPointerObjectId("interfaceLanguage"); model.CountryOfResidence = user.GetPointerObjectId("residenceCountry"); model.SelectedDeviceType = user.Keys.Contains("deviceType") && (user["deviceType"] as ParseObject) != null ? (user["deviceType"] as ParseObject).FetchIfNeededAsync().Result.ObjectId : string.Empty; model.SelectedDeviceType = model.DeviceTypes.FirstOrDefault(deviceType => deviceType.Key.Split(new [] { '|' })[0] == model.SelectedDeviceType).Key; ViewBag.DeviceUnSupportedText = Strings.GetLocalizedString(Strings.UnSupportedDevice); var userAdminData = user.GetPointerObject<UserAdminData>("adminData"); if (userAdminData != null) { model.AdminData.TCPTeacherCommission = userAdminData.TcpTeacherCommission.ToString("n2"); model.AdminData.AgentUserName =userAdminData.Agent!=null? userAdminData.Agent.Username:string.Empty; model.AdminData.ACPAgentCommission = userAdminData.AcpTeacherCommission.ToString("n2"); model.AdminData.STRCommissionRatio = userAdminData.StrCommissionRatio; model.AdminData.UserPublishingStatus = userAdminData.GetPointerObjectId("userPublishingStatus"); model.AdminData.UserStatus = userAdminData.GetPointerObjectId("userStatus"); model.AdminData.LockCountry = userAdminData.LockCountry; model.AdminData.LockCurrency = userAdminData.LockCurrency; model.AdminData.AdminRemarks = userAdminData.AdminRemarks; if (userAdminData.Group != null) { var savedSelectedGroup = userAdminData.Group.ObjectId; var selectedSubGroup = subGroups.SingleOrDefault(o => o.ObjectId == savedSelectedGroup); var selectedGroup = groups.SingleOrDefault(o => o.ObjectId == savedSelectedGroup); if (selectedSubGroup != null) { selectedGroup = groups.Single(o => o.ObjectId == selectedSubGroup.Parent.ObjectId); } model.AdminData.Group = selectedGroup != null ? selectedGroup.ObjectId : string.Empty; model.AdminData.SubGroup = selectedSubGroup != null ? selectedSubGroup.ObjectId : string.Empty; } } model.Messages.CountryLocked = Strings.GetLocalizedString(Strings.CountryLocked); model.Messages.SugOsekLocked = Strings.GetLocalizedString(Strings.SugOsekLocked); model.Messages.CurrencyLocked = Strings.GetLocalizedString(Strings.CurrencyLocked); model.Messages.SugNirutLocked = Strings.GetLocalizedString(Strings.SugNirutLocked); model.Messages.AgentNotFound = Strings.GetLocalizedString(Strings.AgentNotFound); if (user.GetStatus() == UserStatusStrings.AppUser) { model.AppUserMessage = string.Format(MyMentorResources.appUserMoreDetails, user.GetFullName(Language.CurrentLanguageCode)); } return View(model); }
public FileContentResult DownloadDemoClip(string clipId) { IMyMentorRepository repository = new ParseRepository(new WebCacheProvider(HttpContext.ApplicationInstance.Context)); var clipUrl = repository.FindDemoClipURI(clipId); var streamer = new FileStreamer(HttpContext); var stream = streamer.GetTempFileUrl(clipUrl); return File(stream, "audio/mpeg3"); }
public ActionResult Register() { WorldIsRetriverFactory.GetWorldId(HttpContext, Session); var model = new RegisterViewModel(); var repository = new ParseRepository(new WebCacheProvider(HttpContext.ApplicationInstance.Context)); model.DeviceTypes = repository.FindDeviceTypes(); model.Countries = repository.FindCountriesNameAndId(); ViewBag.DeviceUnSupportedText = Strings.GetLocalizedString(Strings.UnSupportedDevice); return View(model); }
public async Task<ActionResult> Register(RegisterViewModel model) { var repository = new ParseRepository(new WebCacheProvider(HttpContext.ApplicationInstance.Context)); model.DeviceTypes = repository.FindDeviceTypes(); model.Countries = repository.FindCountriesNameAndId(); if (ModelState.IsValid) { Exception logException = default(Exception); var userManager = new MyMentorUserManager(repository, Session); try { model.CountryOfResidenceTitle = model.Countries[model.CountryOfResidence]; model.ContentTypeId = WorldIsRetriverFactory.GetWorldId(HttpContext, Session); model.CurrencyId = (repository.FindResidenceById(model.CountryOfResidence)).CurrencyId; await userManager.RegisterUser(model); var parseUser = await userManager.Login(model.UserName, model.Password, Session); Mailer.SendRegistrationSuccess(parseUser); model.ShowSuccessMessage = true; ViewBag.TeacherSuccessMessage = Strings.GetLocalizedString(Strings.RegistrationSuccessTeacher); ViewBag.TeacherSuccessMessage = string.Format(ViewBag.TeacherSuccessMessage, model.FirstName); ViewBag.StudentSuccessMessage = Strings.GetLocalizedString(Strings.RegistrationSuccessStudent); ViewBag.StudentSuccessMessage = string.Format(ViewBag.StudentSuccessMessage, model.FirstName); } catch (ParseException ex) { if (ex.Code == ParseException.ErrorCode.UsernameTaken) { ModelState.AddModelError("UserName", MyMentorResources.userExistsInTheSystem); } if (ex.Code == ParseException.ErrorCode.InvalidEmailAddress) { ModelState.AddModelError("UserName", MyMentorResources.illegalEmailAddress); } logException = ex; } catch (Exception ex) { logException = ex; mLogger.Log(LogLevel.Error, ex); ModelState.AddModelError("_FORM", MyMentorResources.registrationGeneralError); } finally { userManager.Dispose(); } if (logException != null) { await ParseLogger.Log("register new user", logException.ToString()); } } else { var isCaptchaError = ModelState["CaptchaInputText"].Errors.Count > 0; ViewBag.IsCaptchaError = isCaptchaError; } // If we got this far, something failed, redisplay form return View(model); }
private async Task DeleteCoupon(CreateCouponViewModel createCouponVm, ParseRepository repository) { try { await repository.DeleteCoupon(createCouponVm.CouponId); createCouponVm.DeleteCouponData(); } catch (Exception ex) { mLogger.Log(LogLevel.Error, ex); } }
private void SetPurchases(ParseRepository repository, ParseUser user) { var userPurchases = repository.FindUserPurchases(user.ObjectId); var userAdminData = user.GetPointerObject<UserAdminData>("adminData"); userAdminData.PurchaseCount = userPurchases.Count(x => x.BundleKey != null || x.ClipKey != null); Task.Run(() => userAdminData.SaveAsync()).Wait(); }
private async Task<CreateCouponViewModel> GetSubmitFirstPageViewData(string email, ParseRepository repository) { var createCouponVm = Session.GetCouponData(); var student = await repository.FindUserMinimalData(email); if (student != null) { createCouponVm.CouponStudentDetails.StudentUserId = student.ObjectId; createCouponVm.CouponStudentDetails.StudentEmailAddress = student.Email; createCouponVm.CouponStudentDetails.StudentFullName = string.Concat(student.GetLocalizedField("firstName"), " ", student.GetLocalizedField("lastName")); createCouponVm.CouponStudentDetails.UserName = student.Username; createCouponVm.CouponErrors.UserError = string.Empty; } else { createCouponVm.CouponErrors.UserError = MyMentorResources.couponUserNotFoundError; } return createCouponVm; }
private async Task ExecutePaymentTransaction(ParseRepository repository, CreateCouponViewModel createCouponVm) { var globalCommissionsTable = repository.FindGlobalTeacherCommission(); var transactionUsers = GetTransactionUsers(createCouponVm.TeacherData,globalCommissionsTable,repository); var siteAccount = transactionUsers.Single(x => x.ObjectId == globalCommissionsTable.SiteAccountId); var siteAccountAdminData = siteAccount.GetPointerObject<UserAdminData>("adminData"); var maamAccount = transactionUsers.Single(x => x.ObjectId == globalCommissionsTable.MaamAccountId); var maamAccountAdminData = maamAccount.GetPointerObject<UserAdminData>("adminData"); var teacherAccount = transactionUsers.Single(x => x.ObjectId == createCouponVm.TeacherData.TeacherId); var teacherAccountAdminData = teacherAccount.GetPointerObject<UserAdminData>("adminData"); var agentAccount = transactionUsers.SingleOrDefault(x => x.ObjectId == createCouponVm.TeacherData.AgentId); var agentAccountAdminData = agentAccount != null ? agentAccount.GetPointerObject<UserAdminData>("adminData") : null; var maamBalance = transactionUsers.Single(x => x.ObjectId == globalCommissionsTable.MaamBalanceAccountId); var maamBalanceAdminData = maamBalance.GetPointerObject<UserAdminData>("adminData"); siteAccountAdminData.Balance = createCouponVm.SiteAccountBalance; siteAccountAdminData.BalanceNis = CurrencyConverter.ConvertToNis(siteAccountAdminData.Balance, siteAccount.GetPointerObject<Currency>("currency").ConvertToCurrencyDto(), repository); maamAccountAdminData.Balance = createCouponVm.MaamAccountBalance; maamAccountAdminData.BalanceNis = CurrencyConverter.ConvertToNis(maamAccountAdminData.Balance, maamAccount.GetPointerObject<Currency>("currency").ConvertToCurrencyDto(), repository); ; teacherAccountAdminData.Balance = createCouponVm.TeacherData.Balance; teacherAccountAdminData.BalanceNis = CurrencyConverter.ConvertToNis(teacherAccountAdminData.Balance, teacherAccount.GetPointerObject<Currency>("currency").ConvertToCurrencyDto(), repository); maamBalanceAdminData.Balance = createCouponVm.MaamBalanceAccountBalance; maamBalanceAdminData.BalanceNis = CurrencyConverter.ConvertToNis(maamBalanceAdminData.Balance, maamBalance.GetPointerObject<Currency>("currency").ConvertToCurrencyDto(), repository); if (agentAccountAdminData != null) { agentAccountAdminData.Balance = createCouponVm.AgentBalance; agentAccountAdminData.BalanceNis = CurrencyConverter.ConvertToNis(agentAccountAdminData.Balance, agentAccount.GetPointerObject<Currency>("currency").ConvertToCurrencyDto(), repository); ; } var couponUpdate = ParseObject.CreateWithoutData<Coupon>(createCouponVm.CouponId); couponUpdate.CouponStatus = BL.Consts.CouponStatus.Active; var validAccountStatements = createCouponVm.AccountStatements.Where(x => x.Credit > 0 || x.Debit > 0) .ToArray() .ConvertToAccountStatementDomain(); var batchUpdates = new ParseObject[] { couponUpdate, siteAccountAdminData, maamAccountAdminData, teacherAccountAdminData, agentAccountAdminData, maamBalanceAdminData }; var finalEventupdate = CreateUpdateEventRecord(createCouponVm, EventStatus.EventPaymentCompleted, repository); var parseObjectsToUpdate = new List<ParseObject>(); parseObjectsToUpdate.AddRange(validAccountStatements); parseObjectsToUpdate.AddRange(batchUpdates); parseObjectsToUpdate.Add(finalEventupdate); await ParseObject.SaveAllAsync(parseObjectsToUpdate); createCouponVm.EventId = finalEventupdate.ObjectId; SendEmails(createCouponVm,repository); }
private async Task StartPaymentProcess(double amountForPayment, string currentUrl, CreateCouponViewModel createCuponVm, ParseRepository repository) { var currencyRetriever = new CurrencyRetriver(HttpContext, Session, repository); var paymentOk = true; try { var itemNameLabel = string.IsNullOrEmpty(createCuponVm.ContentItemDetails.BundleId) ? MyMentorResources.paypalCuponFor : MyMentorResources.paypalCuponForBundle; var itemName = string.Concat(itemNameLabel, createCuponVm.ContentItemDetails.NamePart1, " ", createCuponVm.ContentItemDetails.NamePart2); var ppManager = new ExpressCheckoutManager(currentUrl); var paypalCurrencyCode = createCuponVm.TeacherData.Currency.PaypalCode; amountForPayment = CurrencyConverter.Convert(amountForPayment,currencyRetriever.GetCurrent(),createCuponVm.TeacherData.Currency); var validationResponse = ppManager.CouponSpecialDiscountPaymentValidation(itemName, amountForPayment, paypalCurrencyCode); createCuponVm.PaymentApprovalUrl = validationResponse.ValidationUrl; createCuponVm.PaymentId = validationResponse.PaymentId; //update paymentid in the event record createCuponVm.EventId = await CreateUpdateEvent(createCuponVm, EventStatus.EventStarted, repository); } catch (Exception ex) { paymentOk = false; mLogger.Log(LogLevel.Error, ex); } if (!paymentOk) { await DeleteCoupon(createCuponVm, repository); await CreateUpdateEvent(createCuponVm, EventStatus.EventErrorResolved, repository); } }
private Event CreateUpdateEventRecord(CreateCouponViewModel couponVm, string eventStatus, ParseRepository repository) { var json = new JavaScriptSerializer(); CurrencyDto currentCurrency = null; var eventDto = new EventDto { ObjectId = couponVm.EventId, EventStatus = eventStatus, EventType = EventTypes.CouponPurchase, UserId = couponVm.TeacherData.TeacherId, CouponId = couponVm.CouponId, PaymentData = couponVm.PaymentData, EventData = json.Serialize(couponVm), PaymentAmount = couponVm.TeacherData.AmountForPayment, PaymentAmountNIS = ConvertToNis(couponVm.TeacherData.AmountForPayment, out currentCurrency), }; eventDto.PaymentCurrency = currentCurrency; return eventDto.ConvertToDomain(); }
private async Task CreateAdminOrSelfCoupons(double discountPrice, CreateCouponViewModel createCouponVm, CouponDiscountType discountType, ParseRepository repository) { var couponType = discountPrice == 0 ? CouponTypes.SelfCoupon : CouponTypes.ManagerDiscount; var coupon = await CreateCoupon( createCouponVm, discountPrice, createCouponVm.TeacherData.TeacherCommissionRate, couponType, discountType, BL.Consts.CouponStatus.Active); await coupon.SaveAsync(); createCouponVm.CouponId = coupon.ObjectId; if (string.IsNullOrEmpty(createCouponVm.CouponId)) { createCouponVm.CouponErrors.GeneralError = MyMentorResources.generalError; } SendEmails(createCouponVm,repository); }