using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorController;

namespace MercatorUi.Reporting
{
    public static class Script
    {

        public static void Exec()
        {
            // Sélection des dates
            DateTime[] Dates = MercatorUi.Dialogs.AskDates("Veuillez sélectionner les dates ?");
            if ((Dates != null) && (Dates[1] != new DateTime(1900, 1, 1)))
            {
                // Sélection des données
                string ReqSql = "select id_cli, cli.c_nom, c_adresse, c_codep, c_ville, " +
                    "        sum(tot_bas_fb) as tot_ca, count(pieds_v.id) as nombre, " +
                    "        cast(@Date_1 as DateTime) as Date_1, Cast(@Date_2 as DateTime) as Date_2 " +
                    "    from pieds_v inner join cli on pieds_v.ID_CLI = cli.C_ID " +
                    "    where (date >= @Date_1) and(date <= @Date_2) " +
                    "      and(type = 1) " +
                    "    group by id_cli, cli.c_nom, c_adresse, c_codep, c_ville, c_id " +
                    "    order by cli.c_nom ";
                DataSet ds = Api.Zselect(Api.RepData, ReqSql,
                    new MercatorSqlParam("@Date_1", Dates[0], SqlDbType.DateTime),
                    new MercatorSqlParam("@Date_2", Dates[1], SqlDbType.DateTime));
                //string reportFileName = Globals.MainDir + "RapportTest.repx";
                string reportFileName = @"<MainDir\RapportTest.repx";  // database
                MercatorUi.Reporting.ReportingStatic.FillDataset(ds, "CliRep");

                if (Api.Answer("Modifier le layout ?"))
                {
                    // Création / Modification du rapport
                    string reportLayout = MercatorUi.Reporting.ReportingStatic.Reporting.EditLayout(Api.JustStem(reportFileName), Api.FileToStr(reportFileName, Encoding.UTF8), ds);
                    Api.StrToFile(reportLayout, reportFileName, Encoding.UTF8);
                }

                // Aperçu du rapport
                List<MercatorUi.Reporting.OutputDescriptor> listOutputDescriptors = new List<MercatorUi.Reporting.OutputDescriptor>();
                listOutputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorPreview());
                MercatorUi.Reporting.ReportingStatic.Reporting.RunReport("CliRep", reportFileName, ds, listOutputDescriptors);
            }
        }
    }
}