Esempio n. 1
0
        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());
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
        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());
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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");
            }
        }