public async Task <PurchaseResponseModel> GetAllPurchasesForUser(int id) { var purchases = await _purchaseRepository.ListAllWithIncludesAsync( p => p.UserId == id, p => p.Movie); var movies = new List <PurchasedMovieResponseModel>(); foreach (var purchase in purchases) { movies.Add(new PurchasedMovieResponseModel { Id = purchase.Movie.Id, Title = purchase.Movie.Title, PosterUrl = purchase.Movie.PosterUrl, //ReleaseDate = favorite.Movie.ReleaseDate }); } var response = new PurchaseResponseModel { UserId = id, PurchasedMovies = movies }; return(response); }
public async Task <PurchaseResponseModel> GetAllPurchasesForUser(int id) {/* * if (_currentUserService.UserId != id) * throw new HttpException(HttpStatusCode.Unauthorized, "You are not Authorized to View Purchases"); */ var purchasedMovies = await _purchaseRepository.ListAllWithIncludesAsync( // p => p.UserId == _currentUserService.UserId, p => p.UserId == id, p => p.Movie); var response = new PurchaseResponseModel { UserId = id, PurchasedMovies = new List <PurchasedMovieResponseModel>() }; foreach (var p_movie in purchasedMovies) { response.PurchasedMovies.Add(new PurchasedMovieResponseModel { Id = p_movie.Id, Title = p_movie.Movie.Title, PosterUrl = p_movie.Movie.PosterUrl, PurchaseDateTime = p_movie.PurchaseDateTime.Value, ReleaseDate = p_movie.Movie.ReleaseDate.Value }); } return(response); }
public IActionResult TesEmailInvoice() { PurchaseOutputModel OutPutData = new PurchaseOutputModel(); using (var client = new HttpClient()) { client.BaseAddress = new Uri(BaseAPI + "MediaBuyer/"); var responseTask = client.PostAsync("TesEmailInvoice", null); 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 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 ActionResult <PurchaseResponseModel> TesEmailInvoice() { PurchaseResponseModel res = new PurchaseResponseModel(); try { PurchaseOutputModel temp = new PurchaseOutputModel(); 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; PdfConvertEngine pdfEngine = new PdfConvertEngine(); var pdfPath = pdfEngine.ConvertHTMLToPDF(body, AppSettings.PDFPath, "INV_01_123"); Attachment dataPDF = new Attachment(pdfPath); message.Attachments.Add(dataPDF); EmailSenderEngine emailEngine = new EmailSenderEngine(); string configJSON = JsonConvert.SerializeObject(AppSettings.EmailConfig); emailEngine.SendEmail(message, configJSON); dataPDF.Dispose(); return(res); } catch (Exception ex) { res.Message = ex.Message; res.Response = false; return(res); } }
public async Task <PurchaseResponseModel> GetAllPurchasesForUser(int id) { var res = await _purchaseRepository.GetAllPurchaseById(id); var model = new PurchaseResponseModel(); var list = new List <PurchasedMovieResponseModel>(); //foreach (var i in res) //{ // list.Add(new PurchasedMovieResponseModel // { // PurchaseDateTime = res.PurchaseDateTime // }) ; //} return(model); }
/// <summary> /// purchase book method /// </summary> /// <param name="userId"></param> /// <param name="showPurchaseModel"></param> /// <returns></returns> public PurchaseResponseModel BookPurchase(int userId, ShowPurchaseBookModel showPurchaseModel) { try { DatabaseConnection databaseConnection = new DatabaseConnection(this.configuration); List <StoredProcedureParameterData> paramList = new List <StoredProcedureParameterData>(); paramList.Add(new StoredProcedureParameterData("@UserId", userId)); paramList.Add(new StoredProcedureParameterData("@CartId", showPurchaseModel.CartId)); paramList.Add(new StoredProcedureParameterData("@IsUsed", true)); paramList.Add(new StoredProcedureParameterData("@Address", showPurchaseModel.Address)); paramList.Add(new StoredProcedureParameterData("@CreatedDate", DateTime.Now)); paramList.Add(new StoredProcedureParameterData("@ModifiedDate", DateTime.Now)); DataTable table = databaseConnection.StoredProcedureExecuteReader("PurchaseBook", paramList); var purchaseData = new PurchaseResponseModel(); foreach (DataRow dataRow in table.Rows) { purchaseData = new PurchaseResponseModel(); purchaseData.Id = Convert.ToInt32(dataRow["Id"]); purchaseData.CartId = Convert.ToInt32(dataRow["CartId"]); purchaseData.UserId = Convert.ToInt32(dataRow["UserId"].ToString()); purchaseData.BookId = Convert.ToInt32(dataRow["BookId"].ToString()); purchaseData.Address = dataRow["Address"].ToString().ToString(); purchaseData.Price = Convert.ToInt32(dataRow["Price"]); purchaseData.CreatedDate = Convert.ToDateTime(dataRow["CreatedDate"]); purchaseData.ModifiedDate = Convert.ToDateTime(dataRow["ModifiedDate"]); } if (purchaseData.CartId > 0) { return(purchaseData); } else { return(null); } } catch (Exception exception) { throw new Exception(exception.Message); } }
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 <PurchaseResponseModel> GetAllPurchasedMoviesByUser(int userId) { var movies = await _dbContext.Purchases.Where(p => p.UserId == userId) .Include(f => f.Movie) .Select(f => new PurchasedMovedResponseModel { Id = userId, Title = f.Movie.Title, PosterUrl = f.Movie.PosterUrl, PurchasedDateTime = f.PurchaseDateTime }).ToListAsync(); PurchaseResponseModel purchaseResponse = new PurchaseResponseModel { UserId = userId, purchasedMovies = movies }; return(purchaseResponse); }
public async Task <ActionResult <PurchaseResponseModel> > GetPurchases() { var purchases = await _context .Purchases .Include(p => p.Category) .OrderBy(p => p.PurchaseDate) .ToListAsync(); var responseModel = new PurchaseResponseModel { Purchases = purchases, PurchaseSummary = { TotalPurchaseAmount = purchases.Sum(p => p.PurchaseAmount), AveragePurchaseAmount = purchases.Average(p => p.PurchaseAmount), TransactionCount = purchases.Count() } }; return(responseModel); }
private List <PurchaseResponseModel.PurchasedMovieResponseModel> GetPurchasedMovies( IEnumerable <Purchase> purchases) { var purchaseResponse = new PurchaseResponseModel { PurchasedMovies = new List <PurchaseResponseModel.PurchasedMovieResponseModel>() }; foreach (var purchase in purchases) { purchaseResponse.PurchasedMovies.Add(new PurchaseResponseModel.PurchasedMovieResponseModel { PosterUrl = purchase.Movie.PosterUrl, PurchaseDateTime = purchase.PurchaseDateTime, Id = purchase.MovieId, Title = purchase.Movie.Title }); } return(purchaseResponse.PurchasedMovies); }
public async Task <PurchaseResponseModel> PurchaseMovie(PurchaseRequestModel purchaseRequestModel) { var purchase = new Purchase { MovieId = purchaseRequestModel.MovieId, UserId = purchaseRequestModel.UserId, PurchaseNumber = purchaseRequestModel.PurchaseNumber, PurchaseDateTime = purchaseRequestModel.PurchaseTime, }; var reponse = await _purchaseRepository.AddAsync(purchase); var purchaseResponse = new PurchaseResponseModel { MovieId = reponse.MovieId, UserId = reponse.UserId, PurchaseNumber = reponse.PurchaseNumber, PurchaseTime = reponse.PurchaseDateTime, Price = reponse.TotalPrice, }; return(purchaseResponse); }
public async Task <PurchaseResponseModel> GetAllPurchasesForUser(int id) { if (_currentUserService.UserId != id) { throw new HttpException(HttpStatusCode.Unauthorized, "You are not Authorized to View Purchases"); } //var purchasedMovies = await _purchaseRepository.ListAllWithIncludesAsync( // p => p.UserId == _currentUserService.UserId, // p => p.Movie); var purchasedMovies = await _purchaseRepository.GetAllPurchasesByUser(id); //return _mapper.Map<PurchaseResponseModel>(purchasedMovies); List <PurchasedMovieResponseModel> moviesList = new List <PurchasedMovieResponseModel>(); foreach (var item in purchasedMovies) { moviesList.Add(new PurchasedMovieResponseModel { Id = item.MovieId, Title = item.Movie.Title, PosterUrl = item.Movie.PosterUrl, ReleaseDate = item.Movie.ReleaseDate, PurchaseDateTime = item.PurchaseDateTime, }); } var response = new PurchaseResponseModel { UserId = id, PurchasedMovies = moviesList, }; return(response); }
public async Task <PurchaseResponseModel> Purchase(PurchaseModel purchaseModel, User user) { var purchaseResponse = new PurchaseResponseModel { Success = false, Nanrs = 0 }; try { if (purchaseModel.SaveBilling) { CustomersApi customerApi = new CustomersApi(configuration); if (string.IsNullOrWhiteSpace(user.BillingId)) { CreateCustomerRequest createCustomer = new CreateCustomerRequest(Guid.NewGuid().ToString(), Nickname: user.Username, EmailAddress: user.Email, ReferenceId: user.Id.ToString()); var customerResponse = await customerApi.CreateCustomerAsync(createCustomer); if (customerResponse.Errors != null && customerResponse.Errors.Any()) { return(purchaseResponse); } user.BillingId = customerResponse.Customer.Id; } CreateCustomerCardRequest cardRequest = new CreateCustomerCardRequest(purchaseModel.Token); var cardResponse = await customerApi.CreateCustomerCardAsync(user.BillingId, cardRequest); if (cardResponse.Errors != null && cardResponse.Errors.Any()) { return(purchaseResponse); } user.CardId = cardResponse.Card.Id; } (int price, int amount) = GetPricing(purchaseModel.Amount !); string idempotencyKey = Guid.NewGuid().ToString(); Money money = new Money(price, "USD"); CreatePaymentRequest body; if (purchaseModel.UseSaved || purchaseModel.SaveBilling) { body = new CreatePaymentRequest(SourceId: user.CardId, CustomerId: user.BillingId, IdempotencyKey: idempotencyKey, AmountMoney: money, Note: $"{user.Id} {purchaseModel.Amount}"); } else { body = new CreatePaymentRequest(SourceId: purchaseModel.Token, IdempotencyKey: idempotencyKey, AmountMoney: money, Note: $"{user.Id} {purchaseModel.Amount}"); } PaymentsApi paymentsApi = new PaymentsApi(configuration); var response = await paymentsApi.CreatePaymentAsync(body); if (response.Payment.Status == "COMPLETED") { user.Balance += amount; user.Repurchase = purchaseModel.Refill; if (user.Repurchase) { user.RepurchaseAmount = purchaseModel.Amount; } else { user.RepurchaseAmount = null; } var purchase = new Purchase { Id = Guid.NewGuid(), NanrAmount = amount, UsdAmount = price, Timestamp = DateTime.UtcNow }; context.Purchases.Add(purchase); await emailManager.SendPurchase(user, purchase); } else { return(purchaseResponse); } await context.SaveChangesAsync(); purchaseResponse.Success = true; purchaseResponse.Nanrs = amount; return(purchaseResponse); } catch (Exception ex) { Console.WriteLine(ex); return(purchaseResponse); } }
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"); } }