public async Task AcceptOrderAsync_WithCorrectData_ShouldSuccessfullyUpdate() { var errorMessage = "BoostingService AcceptOrderAsync() method does not work properly."; // Arrange var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var boostOrdersRepository = new EfRepository <BoostOrder>(context); var boostingService = new BoostingService(boostOrdersRepository); var user = new ApplicationUser { Id = Guid.NewGuid().ToString(), }; var boostOrderModel = new PurchaseInputModel { CurrentRank = "Diamond 1", Ranks = 1, Username = "******", Password = "******", }; // Act await boostingService.AddAsync(boostOrderModel); await boostingService.AcceptOrderAsync(user, boostOrderModel.Username); var actualResult = boostOrdersRepository.All().First(); var expectedResult = user.Id; // Assert Assert.True(expectedResult == actualResult.BoosterId, errorMessage); }
public async Task <IActionResult> OnGetEditMissionAsync(string postId) { var user = await _userManager.GetUserAsync(User); var post = await _purchase.GetMissionById(postId); if (user == null || !user.StudentIdentityConfirmed || post.PostUserId != user.Id || post.DeletedMark) { return(RedirectToPage("Index")); } PurchaseInput = new PurchaseInputModel { PostUserId = user.Id, PurchaseContent = post.PurchaseContent, PurchaseAddress = post.PurchaseAddress, PurchaseRequirement = post.PurchaseRequirement, MissionNotes = post.MissionNotes, ReceiveAddress1 = post.PosterAddress1, ReceiveAddress2 = post.PosterAddress2, ReceivePhoneNumber = post.PosterPhoneNumber, MissionReward = post.MissionReward }; PostId = post.Id; PostUserId = user.Id; EditMark = true; return(Page()); }
public async Task GetAllBoostOrders_WithCorrectData_ShouldReturnCorrectResult() { var errorMessage = "BoostingService GetAllBoostOrders() method does not work properly."; // Arrange var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var boostOrdersRepository = new EfRepository <BoostOrder>(context); var boostingService = new BoostingService(boostOrdersRepository); var boostOrderModel = new PurchaseInputModel { CurrentRank = "Diamond 1", Ranks = 1, Username = "******", Password = "******", }; // Act await boostingService.AddAsync(boostOrderModel); var actualResult = boostingService.GetAllBoostOrders().First(); var expectedResult = boostOrderModel; // Assert Assert.True(expectedResult.CurrentRank == actualResult.CurrentRank, errorMessage); Assert.True(expectedResult.Ranks == actualResult.Ranks, errorMessage); Assert.True(expectedResult.Username == actualResult.Username, errorMessage); Assert.True(expectedResult.Password == actualResult.Password, errorMessage); }
public IActionResult ProcessToPurchase() { PurchaseOutputModel OutPutData = new PurchaseOutputModel(); PurchaseInputModel filter = new PurchaseInputModel(); filter.UserID = Guid.Parse(HttpContext.Session.GetString(SessionKeyID)); filter.SubTotal = double.Parse(""); filter.Diskon = double.Parse(""); filter.GrandTotal = double.Parse(""); //filter.BookID = [""]; using (var client = new HttpClient()) { client.BaseAddress = new Uri(BaseAPI + "MediaBuyer/"); var responseTask = client.PostAsJsonAsync <PurchaseInputModel>("GetRoleDropDown", filter); responseTask.Wait(); var result = responseTask.Result; if (result.IsSuccessStatusCode) { var content = result.Content.ReadAsStringAsync(); PurchaseResponseModel resutl = Newtonsoft.Json.JsonConvert.DeserializeObject <PurchaseResponseModel>(content.Result); OutPutData = resutl.data; } else //web api sent error response { //log response status here.. ModelState.AddModelError(string.Empty, "Terjadi kesalahan. Mohon hubungi admin."); } } return(Json(OutPutData)); }
public async Task AddAsync(PurchaseInputModel inputModel) { var boostOrder = new BoostOrder { CurrentRank = inputModel.CurrentRank, Ranks = inputModel.Ranks, Username = inputModel.Username, Password = inputModel.Password, }; await this.boostOrdersRepository.AddAsync(boostOrder); await this.boostOrdersRepository.SaveChangesAsync(); }
public async Task <IActionResult> Purchase(PurchaseInputModel inputModel) { var user = await this.userManager.GetUserAsync(this.User); var price = GlobalConstants.BoostingPricePerRank * inputModel.Ranks; var isUsernameOrdered = this.boostingService.GetAllBoostOrders().Any(x => x.Username == inputModel.Username); if (user.Funds < price || isUsernameOrdered) { return(this.View()); } await this.usersService.RemoveFundsAsync(user, price); await this.boostingService.AddAsync(inputModel); return(this.Redirect("/")); }
public ActionResult <PurchaseResponseModel> ProcessToPurchase([FromBody] PurchaseInputModel data) { PurchaseResponseModel res = new PurchaseResponseModel(); try { PurchaseBL bl = new PurchaseBL(DbContext); var temp = bl.Process(data); res.data = temp; res.Message = "Success"; res.Response = true; if (temp.IDTransaction != Guid.Empty) { ReportBL invoice = new ReportBL(DbContext); var body = invoice.BuildInvoice(temp); MailMessage message = new MailMessage(); message.To.Add("*****@*****.**"); message.Body = body; message.Subject = "Pembelian 7061BTJW Telah Selesai"; message.From = new MailAddress(AppSettings.EmailConfig.FromAddress); message.IsBodyHtml = true; EmailSenderEngine emailEngine = new EmailSenderEngine(); string configJSON = JsonConvert.SerializeObject(AppSettings.EmailConfig); emailEngine.SendEmail(message, configJSON); } return(res); } catch (Exception ex) { res.Message = ex.Message; res.Response = false; return(res); } }
public async Task <IActionResult> OnGetAsync() { var user = await _userManager.GetUserAsync(User); if (user == null || !user.StudentIdentityConfirmed) { return(RedirectToPage("Index")); } var post = await _purchase.GetLastMissionInfoAsync(user.Id); PurchaseInput = new PurchaseInputModel { PostUserId = user.Id, }; if (post != null) { PurchaseInput.ReceiveAddress1 = post.PosterAddress1; PurchaseInput.ReceiveAddress2 = post.PosterAddress2; PurchaseInput.ReceivePhoneNumber = post.PosterPhoneNumber; } PostUserId = user.Id; EditMark = false; return(Page()); }
public PurchaseOutputModel Process(PurchaseInputModel data) { PurchaseRepository repo = new PurchaseRepository(db); Payment temp = new Payment(); DateTime today = DateTime.Now; temp.Diskon = data.Diskon; temp.InvoiceNo = GenerateInvoice(); temp.UserID = data.UserID; temp.TotalPrice = data.GrandTotal; temp.SubTotalPrice = data.SubTotal; temp.CreateByUserID = data.UserID; temp.CreateDate = today; temp.TotalPaid = data.UangMuka; temp.PPNProsen = data.PPNProsen; temp.isLunas = data.GrandTotal - data.UangMuka == 0 ? true : false; if (data.BookID.Count() > 0) { foreach (var x in data.BookID) { Guid bookID = new Guid(); bookID = Guid.Parse(x); temp.BookID = bookID; //keterangan user bayar full payment atau DP var paymentTypeQuery = (from p in db.Payment join m in db.MidTransLog on p.ID equals m.PaymentID where p.BookID == bookID && m.MidTransStatus != 0 select new { m }); var countPaymentType = paymentTypeQuery.Count(); temp.PaymentType = countPaymentType == 0 && data.GrandTotal - data.UangMuka == 0 ? (int)TransactionTypeEnum.FullPayment : countPaymentType < 1 && data.GrandTotal - data.UangMuka != 0 ? (int)TransactionTypeEnum.DP : (int)TransactionTypeEnum.FullPayment; } } var res = repo.Insert(temp); PurchaseOutputModel output = new PurchaseOutputModel(); if (res.ID != Guid.Empty) { output.IDTransaction = res.ID; output.InvoiceNo = temp.InvoiceNo; List <Guid> listBookID = new List <Guid>(); foreach (var x in data.BookID) { listBookID.Add(Guid.Parse(x)); } BookRepository bookRepo = new BookRepository(db); bookRepo.UpdatePurchase(listBookID, res.ID); } return(output); }
public ActionResult ProceedPayment(string bookID, double hargaAmt, double discAmt, double totalAmt, double payAmt) { if (HttpContext.Session.GetString(SessionKeyID) != null && HttpContext.Session.GetString(SessionKeyID) != "") { MidTransTransactionResponseModel OutPutData = null; MidTransChargeInputModel filter = new MidTransChargeInputModel(); PurchaseOutputModel OutPutPurch = null; PurchaseInputModel inputPurch = new PurchaseInputModel(); inputPurch.SubTotal = hargaAmt; inputPurch.Diskon = discAmt; inputPurch.GrandTotal = totalAmt; inputPurch.UangMuka = payAmt; inputPurch.UserID = Guid.Parse(HttpContext.Session.GetString(SessionKeyID)); inputPurch.BookID = new string[1]; inputPurch.BookID[0] = bookID; using (var clientPurch = new HttpClient()) { clientPurch.BaseAddress = new Uri(BaseAPI + "MediaBuyer/"); var responseTaskPurch = clientPurch.PostAsJsonAsync <PurchaseInputModel>("ProcessToPurchase", inputPurch); responseTaskPurch.Wait(); var resultPurch = responseTaskPurch.Result; if (resultPurch.IsSuccessStatusCode) { var contentPurch = resultPurch.Content.ReadAsStringAsync(); PurchaseResponseModel resutlPurch = Newtonsoft.Json.JsonConvert.DeserializeObject <PurchaseResponseModel>(contentPurch.Result); OutPutPurch = resutlPurch.data; if (OutPutPurch != null) { filter.customer_details = new CustomerDetails(); filter.customer_details.billing_address = new BillingAddress(); filter.customer_details.shipping_address = new ShippingAddress(); filter.transaction_details = new TransactionDetails(); filter.transaction_details.currency = "IDR"; filter.transaction_details.order_id = OutPutPurch.InvoiceNo; filter.transaction_details.gross_amount = payAmt; filter.user_id = HttpContext.Session.GetString(SessionKeyID); using (var client = new HttpClient()) { client.BaseAddress = new Uri(BaseAPI.Replace("api/", "")); var responseTask = client.PostAsJsonAsync <MidTransChargeInputModel>("charge", filter); responseTask.Wait(); var result = responseTask.Result; if (result.IsSuccessStatusCode) { var content = result.Content.ReadAsStringAsync(); MidTransTransactionResponseModel resutl = Newtonsoft.Json.JsonConvert.DeserializeObject <MidTransTransactionResponseModel>(content.Result); OutPutData = resutl; } else //web api sent error response { //log response status here.. ModelState.AddModelError(string.Empty, "Server error. Please contact administrator."); } } } } else //web api sent error response { //log response status here.. ModelState.AddModelError(string.Empty, "Server error. Please contact administrator."); } } return(Json(OutPutData)); } else { TempData["CustomError"] = "Please login before using the web."; if (HttpContext.Session.GetString(Loginfrom) == "ADM/SPV") { return(RedirectToAction("AdminLogon", "Login")); } else if (HttpContext.Session.GetString(Loginfrom) == "MDO") { return(RedirectToAction("OwnerLogon", "Login")); } else { return(RedirectToAction("BuyerLogon", "Login")); } //return RedirectToAction("Logon", "Login"); } }