コード例 #1
0
        public ActionResult Dotace(string id)
        {
            if (TryGetCompany(id, out var firma, out var result))
            {
                var dotaceService    = new HlidacStatu.Lib.Data.Dotace.DotaceService();
                var holdingSubsidies = dotaceService.GetDotaceForHolding(firma.ICO).ToList();

                var cerp = holdingSubsidies
                           .SelectMany(s => s.Rozhodnuti
                                       .SelectMany(r => r.Cerpani
                                                   .Select(c =>
                                                           (
                                                               Ico: s.Prijemce.Ico,
                                                               Rok: c.GuessedYear ?? 0,
                                                               Cerpano: c.CastkaSpotrebovana ?? 0
                                                           ))
                                                   )
                                       ).ToList();

                return(View((Firma: firma, Cerpani: cerp)));
            }

            return(result);
        }
コード例 #2
0
        public ActionResult ExportResult(string id, string q, string h, string o, string ct, int?num = null, string ds = null)
        {
            try
            {
                var apiAuth = Framework.ApiAuth.IsApiAuth(this,
                                                          parameters: new Framework.ApiCall.CallParameter[] {
                    new Framework.ApiCall.CallParameter("id", id),
                    new Framework.ApiCall.CallParameter("q", q),
                    new Framework.ApiCall.CallParameter("o", o),
                    new Framework.ApiCall.CallParameter("ct", ct),
                    new Framework.ApiCall.CallParameter("num", num?.ToString()),
                    new Framework.ApiCall.CallParameter("ds", ds)
                });

                if (!apiAuth.Authentificated)
                {
                    //Response.StatusCode = 401;
                    return(Redirect("/"));
                }

                int numOfRecords = num ?? 1000;
                if (string.IsNullOrEmpty(q) || q?.Contains("*") == true)
                {
                    numOfRecords = 100;
                }
                if (this.User.IsInRole("Admin") || this.User.IsInRole("novinar"))
                {
                    numOfRecords = 10000;
                }


                byte[]         rawData     = null;
                string         contentType = "";
                string         filename    = "";
                List <dynamic> data        = new List <dynamic>();


                if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(q) || string.IsNullOrEmpty(h))
                {
                    rawData     = System.Text.Encoding.UTF8.GetBytes("žádná data nejsou k dispozici");
                    contentType = "text/plain";
                    filename    = "chyba.txt";
                    return(File(rawData, contentType, filename));
                }
                else if (HlidacStatu.Lib.Data.Smlouva.Search.IsQueryHashCorrect(id, q, h) == false) //TODO salt in config
                {
                    rawData     = System.Text.Encoding.UTF8.GetBytes("nespravný požadavek");
                    contentType = "text/plain";
                    filename    = "chyba.txt";
                    return(File(rawData, contentType, filename));
                }
                else if (id == "smlouvy")
                {
                    var sres = HlidacStatu.Lib.Data.Smlouva.Search.SimpleSearch(q, 0, numOfRecords, o, logError: false);

                    if (sres.IsValid == false && !string.IsNullOrEmpty(sres.Q))
                    {
                        HlidacStatu.Lib.ES.Manager.LogQueryError <Smlouva>(sres.ElasticResults, "/hledej", this.HttpContext);
                        rawData     = System.Text.Encoding.UTF8.GetBytes("chyba při přípravě dat. Omlouváme se a řešíme to");
                        contentType = "text/plain";
                        filename    = "export.txt";
                        return(File(rawData, contentType, filename));
                    }
                    foreach (var s in sres.Results)
                    {
                        data.Add(s.FlatExport());
                    }
                } //smlouvy
                else if (id == "zakazky")
                {
                    string[] cpvs = (Request.QueryString["cpv"] ?? "").Split(',');
                    var      sres = VerejnaZakazka.Searching.SimpleSearch(q, cpvs, 1, numOfRecords,
                                                                          (Util.ParseTools.ToInt(o) ?? 0).ToString(), (Request.QueryString["zahajeny"] == "1")
                                                                          );

                    if (sres.IsValid == false && !string.IsNullOrEmpty(sres.Q))
                    {
                        rawData     = System.Text.Encoding.UTF8.GetBytes("chyba při přípravě dat. Omlouváme se a řešíme to");
                        contentType = "text/plain";
                        filename    = "export.txt";
                        return(File(rawData, contentType, filename));
                    }
                    else
                    {
                        foreach (var s in sres.Results)
                        {
                            data.Add(s.FlatExport());
                        }
                    }
                }
                else if (id == "dataset")
                {
                    if (string.IsNullOrEmpty(ds))
                    {
                        rawData     = System.Text.Encoding.UTF8.GetBytes("žádná data nejsou k dispozici");
                        contentType = "text/plain";
                        filename    = "chyba.txt";
                        return(File(rawData, contentType, filename));
                    }

                    DataSet datasource = DataSet.CachedDatasets.Get(ds);
                    if (datasource == null)
                    {
                        rawData     = System.Text.Encoding.UTF8.GetBytes("žádná data nejsou k dispozici");
                        contentType = "text/plain";
                        filename    = "chyba.txt";
                        return(File(rawData, contentType, filename));
                    }
                    if (datasource.IsFlatStructure() == false)
                    {
                        rawData     = System.Text.Encoding.UTF8.GetBytes("Tato databáze nemá jednoduchou, plochou strukturu. Proto nemůže být exportována. Použijte API z hlidacstatu.cz/api");
                        contentType = "text/plain";
                        filename    = "chyba.txt";
                        return(File(rawData, contentType, filename));
                    }

                    var sres = datasource.SearchData(q, 1, numOfRecords, (Util.ParseTools.ToInt(o) ?? 0).ToString());

                    if (sres.IsValid == false && !string.IsNullOrEmpty(sres.Q))
                    {
                        rawData     = System.Text.Encoding.UTF8.GetBytes("chyba při přípravě dat. Omlouváme se a řešíme to");
                        contentType = "text/plain";
                        filename    = "export.txt";
                        return(File(rawData, contentType, filename));
                    }
                    else
                    {
                        foreach (var s in sres.Result)
                        {
                            data.Add(datasource.ExportFlatObject(s));
                        }
                    }
                }
                else if (id == "dotace")
                {
                    string[] cpvs = (Request.QueryString["cpv"] ?? "").Split(',');
                    var      sres = new HlidacStatu.Lib.Data.Dotace.DotaceService().SimpleSearch(q, 1, numOfRecords,
                                                                                                 (Util.ParseTools.ToInt(o) ?? 0).ToString());

                    if (sres.IsValid == false && !string.IsNullOrEmpty(sres.Q))
                    {
                        rawData     = System.Text.Encoding.UTF8.GetBytes("chyba při přípravě dat. Omlouváme se a řešíme to");
                        contentType = "text/plain";
                        filename    = "export.txt";
                        return(File(rawData, contentType, filename));
                    }
                    else
                    {
                        foreach (var s in sres.Results)
                        {
                            data.Add(s.FlatExport());
                        }
                    }
                }
                if (data.Count == 0)
                {
                    rawData     = System.Text.Encoding.UTF8.GetBytes("žádná data nejsou k dispozici");
                    contentType = "text/plain";
                    filename    = "chyba.txt";
                }
                else
                {
                    if (ct == "tab")
                    {
                        rawData     = new HlidacStatu.ExportData.TabDelimited().ExportData(new ExportData.Data(data));
                        contentType = "text/tab-separated-values";
                        filename    = "export.tab";
                    }
                    else if (ct == "csv")
                    {
                        rawData     = new HlidacStatu.ExportData.Csv().ExportData(new ExportData.Data(data));
                        contentType = "text/csv";
                        filename    = "export.csv";
                    }
                    else if (ct == "numbers")
                    {
                        rawData     = new HlidacStatu.ExportData.Excel().ExportData(new ExportData.Data(data));
                        contentType = "application/vnd.apple.numbers";
                        filename    = "export.numbers";
                    }
                    else
                    {
                        rawData     = new HlidacStatu.ExportData.Excel().ExportData(new ExportData.Data(data));
                        contentType = "application/vnd.ms-excel";
                        filename    = "export.xlsx";
                    }
                }
                return(File(rawData, contentType, filename));
            }
            catch (Exception e)
            {
                HlidacStatu.Util.Consts.Logger.Error($"Export error:  id={id}, q={q}, h={h}, o={o}, ct={ct}, num={num}, ds={ds}", e);
                return(Content("Nastala chyba. Zkuste to pozdeji znovu", "text/plain"));
            }
        }