Beispiel #1
0
        public IActionResult ReportMasterMoney(ReportMasterMoneyFiltr filtr)
        {
            if (!User.Identity.IsAuthenticated)// если неавторизован то редирект на авторизацию
            {
                Uri location = new Uri($"{Request.Scheme}://{Request.Host}/Account/Login");
                return(Redirect(location.AbsoluteUri));
            }

            ReportMasterMoneyVM VM;

            if (filtr != null)
            {
                VM = new ReportMasterMoneyVM(filtr);
            }
            else
            {
                VM = new ReportMasterMoneyVM();
            }

            return(View(VM));
        }
        public static List <PointTime> GetDiagramLine_UpMasterNotNal(ReportMasterMoneyFiltr Filtr)
        {
            List <PointTime> chart = new List <PointTime>();


            SqlParameter[] parameters = new SqlParameter[]
            {
                new SqlParameter(@"start", SqlDbType.DateTime)
                {
                    Value = Filtr.Start
                },
                new SqlParameter(@"end", SqlDbType.DateTime)
                {
                    Value = Filtr.End
                },
                new SqlParameter(@"ID_MASTER", SqlDbType.BigInt)
                {
                    Value = Filtr.ID_MASTER
                }
            };


            #region sql

            string sqlText = @"

-----------------------------------------------------
--h.	Сколько заработал сам мастер безналом
SELECT 
 DATEPART(YEAR,z.DateClose) AS Year
,DATEPART(MONTH,z.DateClose) AS Month
,DATEPART(DAY,z.DateClose) AS Day

, count(1) AS cntZakazClose
, SUM(z.MoneyMaster) AS summ

 FROM [Zakaz] z
WHERE z.ID_STATUS in (5,7)
	AND z.DateClose between @start AND @end
	AND z.MoneyFirm > 0
	AND z.ID_MASTER =  @ID_MASTER
	AND z.OplataNal=0
GROUP BY DATEPART(YEAR,z.DateClose),DATEPART(MONTH,z.DateClose),DATEPART(DAY,z.DateClose)
ORDER BY DATEPART(YEAR,z.DateClose) ASC
	,DATEPART(MONTH,z.DateClose) ASC
	,DATEPART(DAY,z.DateClose) ASC
";

            if (Filtr.GroupDate == GroupByDate.MONTH)
            {
                sqlText = $@"

-----------------------------------------------------
--h.	Сколько заработал сам мастер безналом
SELECT 
 DATEPART(YEAR,z.DateClose) AS Year
,DATEPART(MONTH,z.DateClose) AS Month
,1 AS Day

, count(1) AS cntZakazClose
, SUM(z.MoneyMaster) AS summ

 FROM [Zakaz] z
WHERE z.ID_STATUS in (5,7)
	AND z.DateClose between @start AND @end
	AND z.MoneyFirm > 0
	AND z.ID_MASTER =  @ID_MASTER
	AND z.OplataNal=0
GROUP BY DATEPART(YEAR,z.DateClose),DATEPART(MONTH,z.DateClose)
ORDER BY DATEPART(YEAR,z.DateClose) ASC
	,DATEPART(MONTH,z.DateClose) ASC
	


";
            }

            if (Filtr.GroupDate == GroupByDate.YEAR)
            {
                sqlText = $@"

-----------------------------------------------------
--h.	Сколько заработал сам мастер безналом
SELECT 
 DATEPART(YEAR,z.DateClose) AS Year
,1 AS Month
,1 AS Day

, count(1) AS cntZakazClose
, SUM(z.MoneyMaster) AS summ

 FROM [Zakaz] z
WHERE z.ID_STATUS in (5,7)
	AND z.DateClose between @start AND @end
	AND z.MoneyFirm > 0
	AND z.ID_MASTER =  @ID_MASTER
	AND z.OplataNal=0
GROUP BY DATEPART(YEAR,z.DateClose)
ORDER BY DATEPART(YEAR,z.DateClose) ASC
	
	


";
            }



            #endregion

            DataTable dt = new DataTable();// при наличии данных
            // получаем данные из запроса
            dt = ExecuteSqlGetDataTableStatic(sqlText, parameters);


            foreach (DataRow row in dt.Rows)
            {
                DateTime date = new DateTime(
                    (int)row["Year"],
                    (int)row["Month"],
                    (int)row["Day"]
                    );

                PointTime point = new PointTime
                {
                    X = date,
                    Y = (int)row["summ"]
                };


                chart.Add(point);
            }

            return(chart);
        }
        // Общая стата
        public static List <ReportMasterMoney> GetMoneyMasters(ReportMasterMoneyFiltr Filtr)
        {
            List <ReportMasterMoney> masters = new List <ReportMasterMoney>();

            SqlParameter[] parameters = new SqlParameter[]
            {
                new SqlParameter(@"start", SqlDbType.DateTime)
                {
                    Value = Filtr.Start
                },
                new SqlParameter(@"end", SqlDbType.DateTime)
                {
                    Value = Filtr.End
                }
            };


            #region sql

            string sqlText = @"


-- отчет по мастерам

SELECT 
m.Name -- a
,z.ID_MASTER

,(SELECT ISNULL(SUM(z1.MoneyFirm),0) FROM [Zakaz] z1
	WHERE z1.ID_MASTER=z.ID_MASTER
	AND z1.ID_STATUS in (5,7)
	AND z1.DATA between @start AND @end
	AND z1.MoneyFirm > 0
	) AS MoneyAllFirma --b

,(SELECT ISNULL(SUM(z1.MoneyFirm),0) FROM [Zakaz] z1
	WHERE z1.ID_MASTER=z.ID_MASTER
	AND z1.ID_STATUS=5
	AND z1.DATA between @start AND @end
	AND z1.MoneyFirm > 0
	) AS MoneySucces --c
	
,(SELECT ISNULL(SUM(z1.MoneyFirm),0) FROM [Zakaz] z1
	WHERE z1.ID_MASTER=z.ID_MASTER
	AND z1.ID_STATUS=7
	AND z1.DATA between @start AND @end
	AND z1.MoneyFirm > 0
	) AS MoneyDiagnostik --d

,(SELECT ISNULL(SUM(z1.MoneyFirm),0) FROM [Zakaz] z1
	WHERE z1.ID_MASTER=z.ID_MASTER
	AND z1.ID_STATUS in (5,7)
	AND z1.DATA between @start AND @end
	AND z1.MoneyFirm > 0
	AND z1.Povtor=1
	) AS MoneyPovtorRab --e
	
,(SELECT ISNULL(SUM(z1.MoneyDetal),0) FROM [Zakaz] z1
	WHERE z1.ID_MASTER=z.ID_MASTER
	AND z1.ID_STATUS=5
	AND z1.DATA between @start AND @end
	AND z1.MoneyFirm > 0
	) AS MoneyDetal --f
	
		
,(SELECT ISNULL(SUM(z1.MoneyMaster),0) FROM [Zakaz] z1
	WHERE z1.ID_MASTER=z.ID_MASTER
	AND z1.ID_STATUS in (5,7)
	AND z1.DATA between @start AND @end
	AND z1.MoneyFirm > 0
	AND z1.OplataNal=1
	) AS MoneyNal --g
	
,(SELECT ISNULL(SUM(z1.MoneyMaster),0) FROM [Zakaz] z1
	WHERE z1.ID_MASTER=z.ID_MASTER
	AND z1.ID_STATUS in (5,7)
	AND z1.DATA between @start AND @end
	AND z1.MoneyFirm > 0
	AND z1.OplataNal=0 
	) AS MoneyNotNal --h

, count(1) AS allZakazClose

 FROM [Zakaz] z
JOIN [User] m ON m.ID_USER=z.ID_MASTER
WHERE z.ID_STATUS in (3,5,7)
	AND z.DATA between @start AND @end
GROUP BY m.Name, z.ID_MASTER
ORDER BY m.Name ASC


";

            #endregion

            DataTable dt = new DataTable();// при наличии данных
            // получаем данные из запроса
            dt = ExecuteSqlGetDataTableStatic(sqlText, parameters);
            //Name	ID_MASTER	MoneyAllFirma	MoneySucces	MoneyDiagnostik	MoneyPovtorRab	MoneyDetal	MoneyNal	MoneyNotNal	allZakazClose


            foreach (DataRow row in dt.Rows)
            {
                ReportMasterMoney master = new ReportMasterMoney
                {
                    FIOMaster             = (string)row["Name"],
                    ID_MASTER             = (long)row["ID_MASTER"],
                    Firma                 = (int)row["MoneyAllFirma"],
                    Succes                = (int)row["MoneySucces"],
                    Diagnostik            = (int)row["MoneyDiagnostik"],
                    PovtorMoney           = (int)row["MoneyPovtorRab"],
                    Detal                 = (int)row["MoneyDetal"],
                    ZarabotalMasterNal    = (int)row["MoneyNal"],
                    ZarabotalMasterNotNal = (int)row["MoneyNotNal"]
                };

                masters.Add(master);
            }


            return(masters);
        }