using System;
using System.Data.SqlClient;

namespace Baza_Reklam
{
    /// <summary>
    /// Klasa budująca ścieżki do plików JPG, EPS, CDR. Przepisana prawie bez zmian ze starej bazy.
    /// </summary>
    class Produkcja
    {
        /// <summary>
        /// Zmienne wskazują, które pliki są nowe, a które w archiwum. 
        /// </summary>
        private const int CONST_NOWE_NAZWY_PLIKOW = 0;
        private const int CONST_STARE_NAZWY_PLIKOW = 1;
        private const int CONST_ARCHIWUM_PLIKOW = 2;


        private static byte TypNazwy(int rok)
        {
            if (rok >= 2005)
            {
                return 0;
            }
            return 1;
        }

        private static string BezPolskichZnakow(string s)
        {
            s = s.Replace("ą", "a");
            s = s.Replace("ę", "e");
            s = s.Replace("ć", "c");
            s = s.Replace("ś", "s");
            s = s.Replace("ł", "l");
            s = s.Replace("ż", "z");
            s = s.Replace("ź", "z");
            s = s.Replace("ó", "o");
            s = s.Replace("ń", "n");
            return s;
        }

        private static string GetFRoz(string idReklamy,int grzbiet, string tyt)
        {
            switch (tyt)
            {
                case "AMT":
                    return idReklamy.Substring(0, 4);
                case "GS":
                    //grzbiet śląski
                    if (grzbiet == 9) return idReklamy.Substring(0, 4);
                    //grzbiet warszawski
                    if (grzbiet == 7) return idReklamy.Substring(0, 4);
                    return idReklamy.Substring(0, 3);
                default:
                    return idReklamy.Substring(0, 4);
            }
        }

        private static string GetShortReklamaName(string idReklamy, int grzbiet, string tyt)
        {
            switch (tyt)
            {
                case "AMT":
                    return idReklamy.Substring(0, 7);
                case "GS":
                    //grzbiet ślaski
                    if (grzbiet == 9) return idReklamy.Substring(0, 7);
                    //grzbiet warszawski
                    if (grzbiet == 7) return idReklamy.Substring(0, 7);
                    return idReklamy.Substring(0, 6);
                case "AGRO":
                    return idReklamy.Substring(0, 7);
                case "EXPO":
                    return idReklamy.Substring(0, 7);
                case "AS-GD":
                case "AS-WA":
                    return idReklamy.Substring(0, 7);
            }
            return "";
        }


        public static string GetReklamaFileName(string idReklamy, string tytul, int grzbiet, string miasto, byte staryNowyArchiwum, string fileRoz, string agencja)
        {
            string F_ROZ;
            string PathName = "";
            string Reklama_PathName;

            Reklama_PathName = Properties.Settings.Default.reklamaPath;

            if (miasto.ToLower() == "słupsk")
            {
                miasto = agencja.ToLower() == "redakcja" ? "redakcja" : "adMoto";
            }
            if (miasto.ToLower() == "gdańsk")
            {
                miasto = "gdynia";
            }

            F_ROZ = GetFRoz(idReklamy, grzbiet, tytul);

            if (staryNowyArchiwum == CONST_NOWE_NAZWY_PLIKOW)
            {
                idReklamy = GetShortReklamaName(idReklamy, grzbiet, tytul);
            }

            //stare ścieżki do plików
            if (staryNowyArchiwum == CONST_STARE_NAZWY_PLIKOW)
            {
                if (fileRoz == "cdr")
                {
                    PathName = "\\\\Home\\cc1\\DTP\\REKLAMY\\";
                }
                if (fileRoz == "eps")
                {
                    PathName = "\\\\Home\\cc1\\DTP\\EPS\\";
                }
                if (fileRoz == "jpg")
                {
                    PathName = "\\\\Home\\cc1\\DTP\\JPG\\";
                }
                if (fileRoz == "pdf")
                {
                    PathName = "\\\\Home\\cc1\\DTP\\JPG\\";
                }

                switch (grzbiet)
                {
                    case 5: //POMORSKI
                        miasto = "E_AUTO";
                        break;
                    case 7: //STOŁECZNY
                        miasto = "F_AUTO";
                        break;
                    case 9: //KATOWICKI
                        miasto = "G_AUTO";
                        break;
                    case 10: //SZCZECIŃSKI
                        miasto = "I_AUTO";
                        break;
                }

                switch (tytul)
                {
                    case "GS":
                        tytul = "Gielda";
                        PathName = PathName + "_" + tytul + "\\" + miasto + "\\" + F_ROZ + "\\" + idReklamy + "." +
                                   fileRoz;
                        break;
                    case "AMT":
                        tytul = "Truck";
                        PathName = PathName + "_" + tytul + "\\" + miasto + "\\" + F_ROZ + "\\" + idReklamy + "." +
                                   fileRoz;
                        break;
                    case "PROMO":
                        tytul = "Promo";
                        PathName = PathName + "_" + tytul + "\\" + miasto + "\\" + F_ROZ + "\\" + idReklamy + "." +
                                   fileRoz;
                        break;
                    case "AGRO":
                        tytul = "agro";
                        PathName = PathName + "_" + tytul + "\\" + miasto + "\\" + F_ROZ + "\\" + idReklamy + "." +
                                   fileRoz;
                        break;
                    case "EXPO":
                        tytul = "expo";
                        PathName = PathName + "_" + tytul + "\\" + miasto + "\\" + F_ROZ + "\\" + idReklamy + "." +
                                   fileRoz;
                        break;
                }


            } //koniec starych


            //nowe nazwy plików
            if (staryNowyArchiwum == CONST_NOWE_NAZWY_PLIKOW)
            {
                if (tytul.StartsWith("AS-"))
                {
                    tytul = "GS";
                }

                if (Reklama_PathName == "")
                {
                    Reklama_PathName = "\\\\HOME\\CC1\\DTP\\ReklamaFiles\\";
                        //zabezpieczenie na wypadek błędu w programie
                }
                PathName = Reklama_PathName; //wartość zmiennej Reklama_PathName ustalana jest w LoginModule

                if (fileRoz == "pdf")
                {
                    PathName = PathName + "JPG" + "\\" + tytul + "\\" + miasto + "\\" + F_ROZ + "\\" + idReklamy + "." +
                               "pdf";
                }
                else
                {
                    PathName = PathName + fileRoz + "\\" + tytul + "\\" + miasto + "\\" + F_ROZ + "\\" + idReklamy + "." +
                               fileRoz;
                }

            }

            //ARCHIWUM
            if (staryNowyArchiwum == CONST_ARCHIWUM_PLIKOW)
            {
                if (Reklama_PathName == "")
                {
                    Reklama_PathName = "\\\\HOME\\CC1\\DTP\\ReklamaFiles\\";
                        //zabezpieczenie na wypadek błędu w programie
                }
                PathName = Reklama_PathName + "_ARCHIWUM\\";

                if (fileRoz == "pdf")
                {
                    PathName = PathName + "JPG" + "\\" + tytul + "\\" + miasto + "\\" + F_ROZ + "\\" + idReklamy + "." +
                               "pdf";
                }
                else
                {
                    PathName = PathName + fileRoz + "\\" + tytul + "\\" + miasto + "\\" + F_ROZ + "\\" + idReklamy + "." +
                               fileRoz;
                }

            }

            PathName = BezPolskichZnakow(PathName.ToLower());
            PathName = PathName.ToUpper();

            return PathName;
        }

        public static void ArgumentyDoSciezki(int reklamaId, string idReklamy, out string tytul, out int grzbiet, out string miasto, out byte staryNowyArchiwum, out string agencja)
        {
            tytul = "";
            grzbiet = 0;
            miasto = "";
            staryNowyArchiwum = 1;
            agencja = string.Empty;

            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "select R.TYTUŁ,datepart(year,R.[DATA ZAMÓWIENIA]),R.GRZBIET,dbo.AGENCJE.miasto, dbo.Agencje.Symbol " +
                              " from REKLAMA R left join dbo.AGENCI on dbo.AGENCI.symbol = R.[SYMBOL AKWIZYTORA] left join  dbo.AGENCJE " +
                              " on dbo.AGENCI.ID_AGENCJI=dbo.AGENCJE.Id_agencji where reklamaId=@rekID";

            cmd.Parameters.AddWithValue("@rekId", reklamaId);

            cmd.Connection = new SqlConnection(ConnString.getConnString().Value);

            cmd.Connection.Open();

            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                tytul = reader.IsDBNull(0) ? tytul : reader.GetValue(0).ToString();
                staryNowyArchiwum = reader.IsDBNull(1)
                                        ? staryNowyArchiwum
                                        : TypNazwy(Convert.ToInt32(reader.GetValue(1)));
                grzbiet = reader.IsDBNull(2) ? grzbiet : Convert.ToInt32(reader.GetValue(2));
                miasto  = reader.IsDBNull(3) ? miasto : reader.GetValue(3).ToString();
                agencja = reader.IsDBNull(4) ? agencja : reader.GetValue(4).ToString();
            }

            cmd.Connection.Close();

        }
    }
}
