Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
        }
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));
        }
        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);
            }
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        /// <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);
            }
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
            }
        }
Esempio n. 15
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");
            }
        }