예제 #1
0
        public async Task <IActionResult> Export(int?ColleagueID, int?SponsorID, string FromDate, string ToDate)
        {
            string    path     = _hostingEnvironment.WebRootPath + @"\Catch\";
            string    fileName = string.Empty;
            DateTime  From     = new DateTime();
            DateTime  To       = new DateTime();
            DataTable dt       = new DataTable();

            dt.Columns.Add("SponsorName");
            dt.Columns.Add("Phone");
            dt.Columns.Add("Date");
            dt.Columns.Add("Time");
            dt.Columns.Add("ReceiptNumber");
            dt.Columns.Add("CardNumber");
            dt.Columns.Add("TrackingNumber");
            dt.Columns.Add("Amount");

            try
            {
                this.GetFromTo_default_FirstMonthToNow(ref From, ref To, FromDate.ToSolar(), ToDate.ToSolar());
            }
            catch (Exception ex)
            {
                ViewBag.err = ex;
                return(View("Error"));
            }

            RedirectToActionResult           view;
            IEnumerable <SponsorTransaction> transactions;

            if (ColleagueID != null)
            {
                transactions = colleages.GetFromToTransactionByColleagueIdAsync(ColleagueID.Value, From, To);
                fileName    += colleages.GetByIdAsync(ColleagueID.Value).Result.Name.ToString();
                view         = RedirectToAction("Details", "Colleague", new { id = ColleagueID.Value });
            }
            else if (SponsorID != null)
            {
                transactions = await sponsors.GetFromToTransactionBySponsorIdAsync(SponsorID.Value, From, To);

                fileName += transactions.First().MySponsor.Name.ToString();
                view      = RedirectToAction("Details", "Sponsor", new { id = SponsorID.Value });
            }
            else
            {
                transactions = await sponsors.GetFromToTransactionAsync(From, To);

                fileName += "_";
                view      = RedirectToAction("Index", "Home");
            }

            fileName += "_From" + From.ToSolar().Replace('/', '.') + "To" + To.ToSolar().Replace('/', '.') + ".xlsx";

            foreach (var trnsctn in transactions)
            {
                DataRow row = dt.NewRow();

                row["SponsorName"]    = trnsctn.MySponsor.Name.ToString();
                row["Phone"]          = trnsctn.MySponsor.PhoneNumber.ToString();
                row["Date"]           = trnsctn.MyTransaction?.TransactionDate.ToSolar() ?? trnsctn.MyReceipt.TransactionDate.ToSolar();
                row["Time"]           = trnsctn.MyTransaction?.TransactionDate.TimeOfDay.ToString() ?? trnsctn.MyReceipt.TransactionDate.TimeOfDay.ToString();
                row["ReceiptNumber"]  = trnsctn.MyReceipt?.ReceiptNumber.ToString() ?? string.Empty;
                row["CardNumber"]     = trnsctn.MyTransaction?.LastFourNumbersOfBankCard.ToString() ?? string.Empty;
                row["TrackingNumber"] = trnsctn.MyTransaction?.TrackingNumber.ToString() ?? string.Empty;
                row["Amount"]         = trnsctn.MyTransaction?.Amount.ToString() ?? trnsctn.MyReceipt.Amount.ToString();

                dt.Rows.Add(row);
            }

            Excel.Write(path + fileName, dt);

            this.SetViewMessage("Exported Transactions successfully", WebMessageType.Success);
            return(view);
        }