public async Task <IActionResult> Gendata(string date1, string date2)
        {
            /*Check Session */
            var page            = "251";
            var typeofuser      = "";
            var PermisionAction = "";

            // CheckSession
            if (string.IsNullOrEmpty(HttpContext.Session.GetString("Username")))
            {
                Alert("คุณไม่มีสิทธิ์ใช้งานหน้าดังกล่าว", NotificationType.error);
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                typeofuser      = HttpContext.Session.GetString("TypeOfUserId");
                PermisionAction = HttpContext.Session.GetString("PermisionAction");
                if (PermisionHelper.CheckPermision(typeofuser, PermisionAction, page) == false)
                {
                    Alert("คุณไม่มีสิทธิ์ใช้งานหน้าดังกล่าว", NotificationType.error);
                    return(RedirectToAction("Index", "Home"));
                }
            }
            /*Check Session */



            var           StartDate = Convert.ToDateTime(date1.Substring(6, 4) + "-" + date1.Substring(3, 2) + "-" + date1.Substring(0, 2) + " 00:00:00");
            var           EndDate1  = Convert.ToDateTime(date2.Substring(6, 4) + "-" + date2.Substring(3, 2) + "-" + date2.Substring(0, 2) + " 00:00:00");
            TimeSpan      difference;
            var           EndDate  = EndDate1;
            IActionResult response = Unauthorized();
            //var StraightLineAll = _context.FixAssetStraightLines.ToList();
            var StraightLineAll = _context.FixAssetStraightLines.ToList();

            FixAssetStraightLine Straight;

            List <FixAssetStraightLine> Straights = new List <FixAssetStraightLine>();

            var querydata = "SELECT  " +
                            "ROW_NUMBER() OVER (ORDER BY dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_]) AS ID, " +
                            "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_] as FANO, " +
                            "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Description, " +
                            "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Date] as StartDate, " +
                            "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Group] AS FAPostingGroup, " +
                            "sum(dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Amount) as Amount, " +
                            "sum(dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Qty_) as Quantity " +
                            "FROM " +
                            "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] " +
                            "LEFT JOIN dbo." + Environment.GetEnvironmentVariable("Company") + "Fixed Asset] ON dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_] = dbo." + Environment.GetEnvironmentVariable("Company") + "Fixed Asset].No_ " +
                            "WHERE dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Type]=0 and [Reason Code] in('AC DISP','AC DONATIO','AC LOST')   " +
                            "GROUP BY  " +
                            "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_], " +
                            "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Description, " +
                            "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Date], " +
                            "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Group] " +
                            "order by dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_]  ";

            var FixAssetMisses = await _navcontext.FixAssetMisses.FromSqlRaw(querydata).ToListAsync();



            foreach (var std in StraightLineAll)
            {
                Straight = new FixAssetStraightLine();
                Straight = std;
                EndDate  = EndDate1;
                var StartDate1 = StartDate;


                var FixAssetData = FixAssetMisses.Where(p => p.FANO == std.FANO).ToList();
                if (FixAssetData.Count > 0)
                {
                    Straight.StraightLine = 0;
                    var     amount      = Math.Round(std.Amount, 2);
                    var     endprice    = Math.Round(std.PriceEnd * -1, 2);
                    decimal total       = Math.Round(0.00M, 2);
                    var     CutQuantity = 0M;
                    var     CutAmount   = 0M;


                    if (std.EndDate <= StartDate)  //วันที่สิ้นสุด น้อยกว่าเท่ากับ วันที่ เริ่ม
                    {
                    }
                    else if (std.StartDate >= EndDate) //วันที่เริ่ม มากกว่าเท่ากับ วันที่สิ้นสุด
                    {
                    }
                    else
                    {
                        //เช็คว่ามีรายการเกิดก่อน วันหรือไม่เพื่อลดค่า amount และ Quantity
                        CutQuantity = FixAssetData.Where(p => p.StartDate < StartDate).Sum(a => a.Quantity);
                        CutAmount   = FixAssetData.Where(p => p.StartDate < StartDate).Sum(a => a.Amount);
                        amount      = amount + CutAmount;
                        endprice    = endprice + CutQuantity;


                        if (amount <= 0)
                        {
                        }
                        else
                        {
                            //เช็คตั้งแต่ Start ถึง End มีรายการหรือไม่ คิดค่าใช้จ่ายระหว่างทาง
                            var checkcurrent = FixAssetData.Where(p => p.StartDate >= StartDate && p.StartDate <= EndDate).ToList();
                            if (checkcurrent.Count > 0)
                            {
                                for (var i = 0; i < checkcurrent.Count; i++)
                                {
                                    if (i == 0 && (checkcurrent.Count != i + 1))
                                    {
                                        if (std.StartDate >= StartDate1 && std.EndDate >= EndDate)  //กรณีทรัพย์สินเกิดหลังวันที่กรองข้อมูล
                                        {
                                            StartDate1 = std.StartDate;
                                            difference = checkcurrent[i].StartDate.AddDays(-1) - StartDate1;
                                        }
                                        else if (std.StartDate <= StartDate1 && std.EndDate <= EndDate) //กรณีทรัพย์สินมีอายุการใช้งานไม่ถึง
                                        {
                                            if (checkcurrent[i].StartDate.AddDays(-1) <= EndDate)
                                            {
                                                EndDate    = std.EndDate;
                                                difference = checkcurrent[i].StartDate.AddDays(-1) - StartDate1;
                                            }
                                            else
                                            {
                                                EndDate    = std.EndDate;
                                                difference = EndDate - StartDate1;
                                            }
                                        }
                                        else if (std.StartDate <= StartDate && std.EndDate >= EndDate) //กรณีปกติ
                                        {
                                            if (checkcurrent[i].StartDate.AddDays(-1) <= EndDate)
                                            {
                                                difference = checkcurrent[i].StartDate.AddDays(-1) - StartDate1;
                                            }
                                            else
                                            {
                                                difference = EndDate - StartDate1;
                                            }
                                        }
                                        else
                                        {
                                            if (checkcurrent[i].StartDate.AddDays(-1) >= StartDate)
                                            {
                                                difference = checkcurrent[i].StartDate.AddDays(-1) - StartDate1;
                                            }
                                            else
                                            {
                                                difference = EndDate - StartDate1;
                                            }
                                        }


                                        var percen = Math.Round(std.Percen, 2);
                                        //difference = FixAssetData[i].StartDate.AddDays(-1) - StartDate1; //create TimeSpan object
                                        total     += ((((amount - endprice) * 0.20M) * (difference.Days + 1)) / 360);
                                        StartDate1 = checkcurrent[i].StartDate;
                                    }



                                    if (checkcurrent.Count == i + 1)
                                    {
                                        var percen = Math.Round(std.Percen, 2);
                                        if ((amount + Math.Round(checkcurrent[i].Amount, 2)) == 0)
                                        {
                                            amount     = amount;
                                            difference = checkcurrent[i].StartDate - StartDate1; //create TimeSpan object
                                        }
                                        else
                                        {
                                            amount     = amount + Math.Round(checkcurrent[i].Amount, 2);
                                            difference = EndDate - StartDate1; //create TimeSpan object
                                        }

                                        endprice = endprice + Math.Round(checkcurrent[i].Quantity, 2);

                                        Console.WriteLine(EndDate + " * " + StartDate1);
                                        Console.WriteLine(amount + "-" + endprice + "*" + percen + "*" + (difference.Days + 1) + "//" + ((((amount - endprice) * (percen / 100)) * (difference.Days + 1)) / 360));
                                        total += ((((amount - endprice) * (percen / 100)) * (difference.Days + 1)) / 360);
                                    }
                                    else
                                    {
                                        var percen = Math.Round(std.Percen, 2);
                                        amount     = amount + Math.Round(checkcurrent[i].Amount, 2);
                                        endprice   = endprice + Math.Round(checkcurrent[i].Quantity, 2);
                                        difference = checkcurrent[i + 1].StartDate.AddDays(-1) - StartDate1; //create TimeSpan object
                                        total     += ((((amount - endprice) * (percen / 100)) * (difference.Days + 1)) / 360);
                                        StartDate1 = checkcurrent[i + 1].StartDate;
                                    }
                                }///จบระหว่างทาง
                            }
                            else
                            {
                                if (std.EndDate <= StartDate)  //วันที่สิ้นสุด น้อยกว่าเท่ากับ วันที่ เริ่ม
                                {
                                }
                                else if (std.StartDate >= EndDate) //วันที่เริ่ม มากกว่าเท่ากับ วันที่สิ้นสุด
                                {
                                }
                                else if (std.StartDate <= StartDate && std.EndDate >= EndDate) //วันที่เริ่ม เริ่ม น้อยกว่าเท่ากับ วันที่เริ่ม  และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด
                                {
                                    difference = EndDate - StartDate;                          //create TimeSpan object
                                    total      = (((((amount - (endprice)) * (std.Percen / 100))) * (difference.Days + 1)) / 360);
                                }
                                else if (std.StartDate >= StartDate && std.EndDate >= EndDate) //วันที เริ่ม มากกว่าเท่ากับ วันที่เริ่ม และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด
                                {
                                    difference = EndDate - std.StartDate;                      //create TimeSpan object
                                    total      = (((((amount - (endprice)) * (std.Percen / 100))) * (difference.Days + 1)) / 360);
                                }
                                else if (std.StartDate <= StartDate && std.EndDate <= EndDate) //วันที่เริ่ม เริ่ม น้อยกว่าเท่ากับ วันที่เริ่ม  และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด
                                {
                                    difference = std.EndDate - StartDate;                      //create TimeSpan object
                                    total      = (((((amount - (endprice)) * (std.Percen / 100))) * (difference.Days + 1)) / 360);
                                }
                            }

                            Straight.StraightLine = Convert.ToDecimal(total);
                            total      = 0;
                            StartDate1 = StartDate;
                        }
                    }
                }
                else
                {
                    if (std.EndDate <= StartDate)  //วันที่สิ้นสุด น้อยกว่าเท่ากับ วันที่ เริ่ม
                    {
                    }
                    else if (std.StartDate >= EndDate) //วันที่เริ่ม มากกว่าเท่ากับ วันที่สิ้นสุด
                    {
                    }
                    else if (std.StartDate <= StartDate && std.EndDate >= EndDate) //วันที่เริ่ม เริ่ม น้อยกว่าเท่ากับ วันที่เริ่ม  และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด
                    {
                        difference            = EndDate - StartDate;               //create TimeSpan object
                        Straight.StraightLine = (((((std.Amount - (std.PriceEnd * -1)) * (std.Percen / 100))) * (difference.Days + 1)) / 360);
                    }
                    else if (std.StartDate >= StartDate && std.EndDate >= EndDate) //วันที เริ่ม มากกว่าเท่ากับ วันที่เริ่ม และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด
                    {
                        difference            = EndDate - std.StartDate;           //create TimeSpan object
                        Straight.StraightLine = (((((std.Amount - (std.PriceEnd * -1)) * (std.Percen / 100))) * (difference.Days + 1)) / 360);
                    }
                    else if (std.StartDate <= StartDate && std.EndDate <= EndDate) //วันที่เริ่ม เริ่ม น้อยกว่าเท่ากับ วันที่เริ่ม  และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด
                    {
                        difference            = std.EndDate - StartDate;           //create TimeSpan object
                        Straight.StraightLine = (((((std.Amount - (std.PriceEnd * -1)) * (std.Percen / 100))) * (difference.Days + 1)) / 360);
                    }
                }


                Straights.Add(Straight);
            }


            response = Ok(new { data = Straights });
            return(response);
        }
        public async Task <IActionResult> UpdateData()
        {
            /*Check Session */
            var page            = "260";
            var typeofuser      = "";
            var PermisionAction = "";

            // CheckSession
            if (string.IsNullOrEmpty(HttpContext.Session.GetString("Username")))
            {
                Alert("คุณไม่มีสิทธิ์ใช้งานหน้าดังกล่าว", NotificationType.error);
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                typeofuser      = HttpContext.Session.GetString("TypeOfUserId");
                PermisionAction = HttpContext.Session.GetString("PermisionAction");
                if (PermisionHelper.CheckPermision(typeofuser, PermisionAction, page) == false)
                {
                    Alert("คุณไม่มีสิทธิ์ใช้งานหน้าดังกล่าว", NotificationType.error);
                    return(RedirectToAction("Index", "Home"));
                }
            }
            /*Check Session */



            IActionResult response  = Unauthorized();
            var           querydata = "SELECT ROW_NUMBER() OVER (ORDER BY a.FANO) AS ID,*, " +
                                      "(SELECT top 1 Amount FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE [FA Posting Type]=7 and [FA No_]=a.FANO and Amount<0 and [FA No_]!='' ORDER BY [Entry No_] DESC) as PriceEnd, " +
                                      "isnull((SELECT top 1 [FA Posting Category] FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE [FA Posting Category]=1 and [FA No_]=a.FANO  ORDER BY [Entry No_] DESC),0) as Sale, " +
                                      "(SELECT top 1 [FA Posting Date] FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE [FA Posting Category]=1 and [FA No_]=a.FANO   ORDER BY [Entry No_] DESC) as SaleDate, " +
                                      "(SELECT top 1 dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[Straight-Line _] FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE  [FA No_]=a.FANO and [Straight-Line _]<>0 ORDER BY [Entry No_] DESC) as Percen, " +
                                      "(100/(SELECT top 1 dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[Straight-Line _] FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE  [FA No_]=a.FANO and [Straight-Line _]<>0 ORDER BY [Entry No_] DESC)) as Life, " +
                                      "DATEADD(year,100/(SELECT top 1 dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[Straight-Line _] FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE  [FA No_]=a.FANO and [Straight-Line _]<>0 ORDER BY [Entry No_] DESC),a.StartDate) as EndDate," +
                                      "0.00 as StraightLine " +
                                      " FROM( " +
                                      "SELECT  " +
                                      "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_] as FANO, " +
                                      "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Description, " +
                                      "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Date] as StartDate, " +
                                      "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Amount, " +
                                      "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Group] AS FAPostingGroup," +
                                      "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Qty_ as Quantity " +
                                      "FROM " +
                                      "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] " +
                                      "LEFT JOIN dbo." + Environment.GetEnvironmentVariable("Company") + "Fixed Asset] ON dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_] = dbo." + Environment.GetEnvironmentVariable("Company") + "Fixed Asset].No_ " +
                                      "WHERE [FA Posting Type]=0 and Amount>=0   " +
                                      ")as a ";

            var StraightLines = await _navcontext.FixAssetStraightLines.FromSqlRaw(querydata).ToListAsync();


            var StraightLineAll = _context.FixAssetStraightLines.ToList();



            List <FixAssetStraightLine> fixAssetStraightLine = new List <FixAssetStraightLine>();
            FixAssetStraightLine        Straight;

            foreach (var std in StraightLines)
            {
                Straight                = new FixAssetStraightLine();
                Straight.Amount         = std.Amount;
                Straight.EndDate        = std.EndDate;
                Straight.FANO           = std.FANO;
                Straight.Description    = std.Description;
                Straight.Life           = std.Life;
                Straight.FAPostingGroup = std.FAPostingGroup;
                Straight.Percen         = std.Percen;
                Straight.PriceEnd       = std.PriceEnd;
                Straight.Quantity       = std.Quantity;
                Straight.Sale           = std.Sale;
                Straight.SaleDate       = std.SaleDate;
                Straight.StartDate      = std.StartDate;
                Straight.StraightLine   = std.StraightLine;
                fixAssetStraightLine.Add(Straight);
            }

            _context.FixAssetStraightLines.RemoveRange(StraightLineAll);
            _context.FixAssetStraightLines.AddRange(fixAssetStraightLine);
            await _context.SaveChangesAsync();



            response = Ok(new { name = StraightLines });
            return(response);
        }