Пример #1
0
        public DataTable getData(string sSql, string ident, ref ErrorCL err, NxParameterCollection pc)
        {
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                err.ErrCode    = -10;
                err.ErrMessage = "Ogiltigt login";
                return(null);
            }

            string    errText = "";
            DataTable dt      = getData(sSql, ref errText, pc);

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                err.ErrMessage = errText;
                err.ErrCode    = -100;
                return(null);
            }
            return(dt);
        }
Пример #2
0
        /// <summary>
        /// Check if an order is open for editing
        /// The return value is a string, 1 = open, -1 = closed or an error message
        /// </summary>
        /// <param name="ident"></param>
        /// <param name="VartOrdernr"></param>
        /// <returns>1 - Open -1 - Closed or an error message</returns>
        public string isOpen(string ident, string VartOrdernr)
        {
            CReparator cr = new CReparator();

            int identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                return("Ogiltigt login");
            }


            string sSql = " select Coalesce(OpenForApp, false) as OpenForApp, "
                          + " Coalesce(Godkand, true) as Godkand "
                          + " from servicehuvud "
                          + " where vart_ordernr = :vart_ordernr ";

            NxParameterCollection pc = new NxParameterCollection();

            pc.Add("vart_ordernr", VartOrdernr);

            string    errText = "";
            DataTable dt      = cdb.getData(sSql, ref errText, pc);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Det finns ingen order med aktuellt ordernr";
                errCode = -10;
                return(errText);
            }

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                ServiceHuvudCL sh = new ServiceHuvudCL();
                sh.ErrCode    = errCode;
                sh.ErrMessage = errText;
            }


            DataRow dr          = dt.Rows[0];
            Boolean bOpenForApp = Convert.ToBoolean(dr["OpenForApp"]);
            Boolean bGodkand    = Convert.ToBoolean(dr["Godkand"]);

            if (bOpenForApp && !bGodkand)
            {
                return("1");
            }
            return("-1");
        }
Пример #3
0
        /// <summary>
        /// Count reparators for a certain order
        /// Returns number of reparators or -1 for error
        /// </summary>
        /// <param name="vart_ordernr"></param>
        /// <param name="ident"></param>
        /// <returns></returns>
        public int countReparator(string vart_ordernr, string ident)
        {
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                return(-1);
            }
            return(countReparator(vart_ordernr));
        }
Пример #4
0
        /*
         * Version 0.96:
         * 2016-06-14 Logging enabled. Bug fixes.
         *
         */

        /// <summary>
        /// Returns database and API versions
        /// </summary>
        /// <param name="ident"></param>
        /// <returns></returns>
        public VersionCL getVersion(string ident)
        {
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            VersionCL v = new VersionCL();

            if (identOK == -1)
            {
                v.ErrCode    = -10;
                v.ErrMessage = "Ogiltigt login";
                v.dbVersion  = 0;
                v.APIVersion = "";
                return(v);
            }

            string sSql = " SELECT db_version "
                          + " FROM \"Version\" ";
            string    errSt = "";
            CDB       cdb   = new CDB();
            DataTable dt    = cdb.getData(sSql, ref errSt);

            if (errSt != "")
            {
                if (errSt.Length > 2000)
                {
                    errSt = errSt.Substring(1, 2000);
                }
                v.dbVersion  = 0;
                v.APIVersion = "";
                v.ErrCode    = -100;
                v.ErrMessage = "Databasfel : " + errSt;
                return(v);
            }

            if (dt.Rows.Count > 0)
            {
                DataRow dr = dt.Rows[0];
                v.dbVersion  = Convert.ToInt32(dr["db_version"]);
                v.APIVersion = apiVersion;
                v.ErrCode    = 0;
                v.ErrMessage = "";
                return(v);
            }

            v.dbVersion  = 0;
            v.APIVersion = "";
            v.ErrCode    = 0;
            v.ErrMessage = "Ingen information tillgänglig";

            return(v);
        }
Пример #5
0
        /// <summary>
        /// Identifies a servicehuvud by sh.vart_ordernr
        /// Retrieves the matching order and return
        /// </summary>
        /// <param name="sh"></param>
        /// <param name="ident"></param>
        /// <returns>ServHuvCL</returns>
        public ServHuvCL getServiceHuvud(ServHuvCL sh, string ident)
        {
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                ServHuvCL sh2 = new ServHuvCL();
                sh2.ErrCode    = -10;
                sh2.ErrMessage = "Ogiltigt login";
                return(sh2);
            }

            return(getServiceHuvud(sh));
        }
Пример #6
0
        /// <summary>
        /// Returns a list of momskoder
        /// This is used by Pyramid
        /// </summary>
        /// <param name="ident"></param>
        /// <returns></returns>
        /// 2018-04-27 KJBO Indentive AB
        public List <MomskodCL> getMomskoder(string ident)
        {
            List <MomskodCL> momsList = new List <MomskodCL>();
            CReparator       cr       = new CReparator();
            int identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                MomskodCL m = new MomskodCL();
                m.ErrCode    = -10;
                m.ErrMessage = "Ogiltigt login";
                momsList.Add(m);
                return(momsList);
            }

            momsList.Add(new MomskodCL {
                Momskod = "Normal moms", MomskodId = 1, ErrCode = 0, ErrMessage = ""
            });
            momsList.Add(new MomskodCL {
                Momskod = "Omvänd skattskyldighet", MomskodId = 2, ErrCode = 0, ErrMessage = ""
            });
            return(momsList);
        }
Пример #7
0
        /// <summary>
        /// Validate, insert or update one servicehuvud
        /// </summary>
        /// <param name="sh"></param>
        /// <param name="ident"></param>
        /// <returns>Newly created servicehuvud</returns>
        // 2018-01-29 KJBO
        public ServHuvCL saveServHuv(ServHuvCL sh, string ident)
        {
            log.log("saveServHuv startas", "0");

            ServHuvCL  shc     = new ServHuvCL();
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                shc.ErrCode    = -10;
                shc.ErrMessage = "Ogiltigt login";
                return(shc);
            }
            log.log("Efter koll av identitet", "0");

            ReparatorCL repIdent = cr.getReparator(ident);

            if (sh.OrderAdmin.Length == 0)
            {
                shc.ErrCode    = -6;
                shc.ErrMessage = "Orderadministratör måste väljas";
                log.log("Orderadministratör måste väljas", "0");
                return(shc);
            }

            ReparatorCL rep = cr.getReparatorFromID(sh.OrderAdmin);

            if (rep == null)
            {
                shc.ErrCode    = -2;
                shc.ErrMessage = "Felaktig orderadmin";
                log.log("Felaktig admin", "0");
                return(shc);
            }

            if (sh.Vart_ordernr.Length == 0)
            {
                shc.ErrCode    = -3;
                shc.ErrMessage = "Vårt ordernummer måste anges";
                return(shc);
            }

            if (sh.Ert_ordernr.Length == 0)
            {
                shc.ErrCode    = -4;
                shc.ErrMessage = "Ert ordernummer måste anges";
                return(shc);
            }

            if (sh.Kund == "")
            {
                shc.ErrCode    = -5;
                shc.ErrMessage = "Kund måste väljas";
                return(shc);
            }

            string ErrTxt = "";
            int    rc     = validateServHuv(sh, ref ErrTxt);

            log.log("ValidateServHuv returnerar : " + rc.ToString(), "");
            if (ErrTxt != "")
            {
                shc.ErrCode    = -101;
                shc.ErrMessage = ErrTxt;
                log.log("Feltext från validateServHuv " + ErrTxt, "0");
                return(shc);
            }
            if (rc == -1)
            {
                shc.ErrCode    = -7;
                shc.ErrMessage = "Vårt ordernummer används redan i systemet";
                return(shc);
            }

            if (sh.FromDate > sh.ToDate)
            {
                shc.ErrCode    = -8;
                shc.ErrMessage = "Felaktigt datumintervall";
                return(shc);
            }

            CExportToPyramid expPyr = new CExportToPyramid();

            if (CConfig.sendToPyramid == 1)
            {
                shc.ErrMessage = expPyr.checkPyramidAPIAvailable();
                if (shc.ErrMessage != "")
                {
                    shc.ErrCode = -1305;
                    if (shc.ErrMessage.Length > 2000)
                    {
                        shc.ErrMessage = shc.ErrMessage.Substring(1, 2000);
                    }
                    return(shc);
                }
            }
            string sSql = "";

            if (sh.IsNew)
            {
                sSql = getInsertSQL();
            }
            else
            {
                sSql = getUpdateSQL();
            }
            NxParameterCollection np = new NxParameterCollection();

            setParameters(np, sh, repIdent.AnvID);
            log.log("Efter set parameters ", "0");
            string errText = "";
            int    iRc     = cdb.updateData(sSql, ref errText, np);

            log.log("Feltext från updateData " + errText, "0");
            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                shc.ErrCode    = -100;
                shc.ErrMessage = errText;
                return(shc);
            }

            iRc = saveWeeks(sh, repIdent.AnvID, ref errText);
            log.log("SaveWeeks returnerar " + iRc.ToString(), "0");
            if (iRc != 1)
            {
                shc.ErrCode    = -100;
                shc.ErrMessage = errText;
                return(shc);
            }
            string godkand = "N";

            if (sh.Godkand)
            {
                godkand = "J";
            }
            log.log("Godkänd är " + godkand, "0");
            if (sh.Godkand)
            {
                CTidRed ctr = new CTidRed();
                ctr.closeAllWeeksForOrder(sh.Vart_ordernr);
            }
            log.log("Före sendToPyramid", "0");
            log.log("sentToPyramid returnerar " + CConfig.sendToPyramid.ToString(), "0");

            if (CConfig.sendToPyramid == 1 && shallSendToPyramid(sh.Vart_ordernr))
            {
                ErrorCL errCl = null;
                log.log("Före  exportToPyramid", "0");
                errCl = expPyr.exportOrder(sh);
                log.log("Efter  exportToPyramid", "0");


                if (errCl.ErrCode != 0)
                {
                    shc.ErrCode    = errCl.ErrCode;
                    shc.ErrMessage = errCl.ErrMessage;
                    return(shc);
                }


                // 2018-05-17
                if (sh.Godkand && isPyramidOrder(sh.Vart_ordernr))
                {
                    // 2018-11-09
                    // To be sure that all possible errors when creating reservation to Pyramid
                    // is handled and resent if possible
                    errCl = expPyr.ensureOrderArtIsReserved(sh.Vart_ordernr);
                    if (errCl.ErrCode != 0)
                    {
                        shc.ErrCode    = errCl.ErrCode;
                        shc.ErrMessage = errCl.ErrMessage;
                        return(shc);
                    }

                    errCl = expPyr.exportTime(sh.Vart_ordernr);
                    if (errCl.ErrCode != 0)
                    {
                        shc.ErrCode    = errCl.ErrCode;
                        shc.ErrMessage = errCl.ErrMessage;
                        return(shc);
                    }


                    errCl = expPyr.exportReservdel(sh.Vart_ordernr);
                    if (errCl.ErrCode != 0)
                    {
                        shc.ErrCode    = errCl.ErrCode;
                        shc.ErrMessage = errCl.ErrMessage;
                        return(shc);
                    }

                    errCl = expPyr.exportReservdelKat1(sh.Vart_ordernr);
                    if (errCl.ErrCode != 0)
                    {
                        shc.ErrCode    = errCl.ErrCode;
                        shc.ErrMessage = errCl.ErrMessage;
                        return(shc);
                    }
                }

                expPyr.setOrderStatus(sh.Vart_ordernr);
                int newStatus = sh.Godkand ? 1 : 0;
                expPyr.addToPyramidChange(sh.Vart_ordernr, repIdent.AnvID, newStatus);
                resendToPyramid();
            }


            if (sh.IsNew)
            {
                CServRad csr = new CServRad();

                string err = csr.createFirstRow(sh.Vart_ordernr, sh.Kund);
                if (err != "")
                {
                    shc.ErrCode    = -1201;
                    shc.ErrMessage = err;
                    return(shc);
                }
            }


            ServHuvCL shRet = getServiceHuvud(sh, ident);

            log.log("getServiceHuvud har meddelande " + shRet.ErrMessage, "0");
            return(shRet);
        }
Пример #8
0
        public VentilCL saveVentil(string ident, VentilCL v)
        {
            VentilCL   vc      = new VentilCL();
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                vc.ErrCode    = -10;
                vc.ErrMessage = "Ogiltigt login";
                return(vc);
            }

            // 2018-11-09 Samtal med Simon

            if (v.Position == "")
            {
                vc.ErrCode    = -1;
                vc.ErrMessage = "Positionsnr måste anges";
                return(vc);
            }

            int iRes = validateVentil(v);

            if (iRes == -1)
            {
                vc.ErrCode    = -1;
                vc.ErrMessage = "Felaktig ventilkategori";
                return(vc);
            }
            if (iRes == -2)
            {
                vc.ErrCode    = -1;
                vc.ErrMessage = "Felaktigt kundID";
                return(vc);
            }

            if (iRes == -3)
            {
                vc.ErrCode    = 101;
                vc.ErrMessage = "Det finns redan en ventil med detta positionsnr";
                return(vc);
            }

            if (iRes == -4)
            {
                vc.ErrCode    = -1;
                vc.ErrMessage = "Ytterdiameter måste vara större än innerdiameter";
                return(vc);
            }

            ReparatorCL r = cr.getReparator(ident);



            string sSql = "";
            bool   bNew = false;

            // This is a new ventil
            if (v.VentilID == null)
            {
                string ventilID = Guid.NewGuid().ToString();
                v.VentilID = ventilID;
                sSql       = getVentilInsertSQL();
                bNew       = true;
            }

            else
            {
                sSql = getVentilUpdateSQL();
            }


            NxParameterCollection np = new NxParameterCollection();

            setParameters(np, v, bNew, r.AnvID);

            string errText = "";

            int iRc = cdb.updateData(sSql, ref errText, np);

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }

                v.ErrCode    = -100;
                v.ErrMessage = errText;
                return(v);
            }

            // 2016-10-17 KJBO
            CServRad csr = new CServRad();

            csr.updateFromVentil2(v.VentilID);



            return(getVentil(ident, v.VentilID));
        }
Пример #9
0
        // Get all open ServiceHuvud for a user
        public List <ServiceHuvudCL> getServHuvForUser(string ident)
        {
            List <ServiceHuvudCL> shList = new List <ServiceHuvudCL>();

            CReparator cr = new CReparator();

            int identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                ServiceHuvudCL sh = new ServiceHuvudCL();
                sh.ErrCode    = -10;
                sh.ErrMessage = "Ogiltigt login";
                shList.Add(sh);
                return(shList);
            }



            string sSql = " SELECT sh.vart_ordernr, sh.ert_ordernr, sh.kund, c.kund as kundnamn, sh.datum, sh.orderAdmin, "
                          + " r.reparator, sh.allrep, coalesce(sh.orderLabel,'') orderLabel "
                          + " FROM ServiceHuvud sh "
                          + " join kund c on sh.kund = c.kund_id "
                          + " left outer join reparator r on sh.orderAdmin = r.AnvID "
                          + " where godkand = false "
                          + " and posttyp = 1 "
                          + " and OpenForApp = true "
                          + " and (allRep = true "
                          + " or orderAdmin = ( select min(a.AnvID) "
                          + " from Authenticate a "
                          + " where a.ident = :pIdent) "
                          + " or exists ( select 'x' "
                          + " from shReparator shr "
                          + " where shr.vart_ordernr = sh.vart_ordernr "
                          + " and shr.AnvID = ( select min(a.AnvID) "
                          + " from Authenticate a "
                          + " where a.ident = :pIdent))) ";

            NxParameterCollection np = new NxParameterCollection();

            np.Add("pIdent", ident);


            string    errText = "";
            DataTable dt      = cdb.getData(sSql, ref errText, np);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Det finns inga tillgängliga order för aktuell användare";
                errCode = -10;
            }

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                ServiceHuvudCL sh = new ServiceHuvudCL();
                sh.ErrCode    = errCode;
                sh.ErrMessage = errText;
                shList.Add(sh);
                return(shList);
            }

            foreach (DataRow dr in dt.Rows)
            {
                ServiceHuvudCL sh = new ServiceHuvudCL();
                sh.VartOrdernr    = dr["vart_ordernr"].ToString();
                sh.ErtOrdernr     = dr["ert_ordernr"].ToString();
                sh.Kund           = dr["kund"].ToString();
                sh.KundNamn       = dr["kundnamn"].ToString();
                sh.OrderDatum     = Convert.ToDateTime(dr["datum"]);
                sh.OrderAdminID   = dr["orderAdmin"].ToString();
                sh.OrderAdminNamn = dr["reparator"].ToString();
                sh.OrderLabel     = dr["orderLabel"].ToString();
                sh.ErrCode        = 0;
                sh.ErrMessage     = "";

                shList.Add(sh);
            }

            return(shList);
        }
Пример #10
0
        public List <VentilKategoriCL> getVentilKategoriers(string ident)
        {
            List <VentilKategoriCL> vc = new List <VentilKategoriCL>();
            CReparator cr = new CReparator();

            int identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                VentilKategoriCL v = new VentilKategoriCL();
                v.ErrCode    = -10;
                v.ErrMessage = "Ogiltigt login";
                vc.Add(v);
                return(vc);
            }


            string sSql = " SELECT ventilkat_id, ventilkategori "
                          + " FROM ventilkategori "
                          + " order by ventilkategori ";



            string errText = "";

            DataTable dt = cdb.getData(sSql, ref errText);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Inga ventilkategorier finns tillgängliga";
                errCode = 0;
            }


            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }

                VentilKategoriCL v = new VentilKategoriCL();
                v.ErrCode    = errCode;
                v.ErrMessage = errText;
                vc.Add(v);
                return(vc);
            }


            foreach (DataRow dr in dt.Rows)
            {
                VentilKategoriCL v = new VentilKategoriCL();
                v.VentilkatID    = Convert.ToInt16(dr["ventilkat_id"]);
                v.Ventilkategori = dr["ventilkategori"].ToString();
                v.ErrCode        = 0;
                v.ErrMessage     = "";

                vc.Add(v);
            }
            return(vc);
        }
Пример #11
0
        /// <summary>
        /// Get all ventils for one customer
        /// </summary>
        /// <param name="ident"></param>
        /// <param name="KundID"></param>
        /// <returns></returns>
        public List <VentilCL> getVentilsForCust(string ident, string KundID, string position, string IDnr, string ventiltyp, string fabrikat, string anlaggningsnr)
        {
            List <VentilCL> vl = new List <VentilCL>();

            CReparator cr = new CReparator();

            int identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                VentilCL v = new VentilCL();
                v.ErrCode    = -10;
                v.ErrMessage = "Ogiltigt login";
                vl.Add(v);
                return(vl);
            }


            string sSql = " SELECT v.ventil_id, v.ventilkategori, v.kund_id, v.\"position\", v.fabrikat, v.ventiltyp, v.id_nr, v.pn, v.pn2, v.dn, v.dn2, "
                          + " v.oppningstryck, v.stalldonstyp, v.stalldon_id_nr, v.stalldon_fabrikat, v.stalldon_artnr, v.lagesstallartyp, "
                          + " v.lagesstall_id_nr, v.lagesstall_fabrikat, v.avdelning, v.anlaggningsnr,  "
                          + "  v.forra_comment, vk.ventilkategori as ventilkategori_namn "
                          + ", v.plan, v.rum, v.insideDiameter, v.outsideDiameter  "
                          + " FROM ventil v "
                          + " join ventilkategori vk on v.ventilkategori = vk.ventilkat_id "
                          + " where v.kund_id = :pKundID "
                          + " and upper(coalesce(v.\"position\",'')) like upper(:position) "
                          + " and upper(coalesce(v.id_nr,'')) like upper(:id_nr) "
                          + " and upper(coalesce(v.ventiltyp,'')) like upper(:ventiltyp) "
                          + " and upper(coalesce(v.fabrikat,'')) like upper(:fabrikat) "
                          + " and upper(coalesce(v.anlaggningsnr,'')) like upper(:anlaggningsnr) ";

            NxParameterCollection np = new NxParameterCollection();

            np.Add("pKundID", KundID);
            np.Add("position", CCommonFunc.addWildCard(position));
            np.Add("ID_nr", CCommonFunc.addWildCard(IDnr));
            np.Add("ventiltyp", CCommonFunc.addWildCard(ventiltyp));
            np.Add("fabrikat", CCommonFunc.addWildCard(fabrikat));
            np.Add("anlaggningsnr", CCommonFunc.addWildCard(anlaggningsnr));

            string errText = "";

            DataTable dt = cdb.getData(sSql, ref errText, np);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Det finns inga ventiler för aktuell kund";
                errCode = 0;
            }

            if (errText != "")
            {
                VentilCL v = new VentilCL();
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                v.ErrCode    = errCode;
                v.ErrMessage = errText;
                vl.Add(v);
                return(vl);
            }

            foreach (DataRow dr in dt.Rows)
            {
                VentilCL vr = new VentilCL();
                vr.VentilID       = dr["ventil_id"].ToString();
                vr.VentilkatID    = Convert.ToInt16(dr["ventilkategori"]);
                vr.Ventilkategori = dr["ventilkategori_namn"].ToString();
                vr.KundID         = dr["kund_id"].ToString();
                vr.Position       = dr["position"].ToString();
                vr.Fabrikat       = dr["fabrikat"].ToString();
                vr.Ventiltyp      = dr["ventiltyp"].ToString();
                vr.IdNr           = dr["id_nr"].ToString();
                vr.Pn             = dr["pn"].ToString();
                vr.Pn2            = dr["pn2"].ToString();
                vr.Dn             = dr["dn"].ToString();
                vr.Dn2            = dr["dn2"].ToString();
                if (dr["oppningstryck"] == DBNull.Value)
                {
                    vr.Oppningstryck = 0;
                }
                else
                {
                    vr.Oppningstryck = Convert.ToDecimal(dr["oppningstryck"]);
                }
                vr.Stalldonstyp       = dr["stalldonstyp"].ToString();
                vr.StalldonIDNr       = dr["stalldon_id_nr"].ToString();
                vr.StalldonFabrikat   = dr["stalldon_fabrikat"].ToString();
                vr.StalldonArtnr      = dr["stalldon_artnr"].ToString();
                vr.Lagesstallartyp    = dr["lagesstallartyp"].ToString();
                vr.LagesstallIDNr     = dr["lagesstall_id_nr"].ToString();
                vr.LagesstallFabrikat = dr["lagesstall_fabrikat"].ToString();
                vr.Avdelning          = dr["avdelning"].ToString();
                vr.Anlaggningsnr      = dr["anlaggningsnr"].ToString();
                vr.Plan = dr["plan"].ToString();
                vr.Rum  = dr["rum"].ToString();
                // 2017-09-25 KJBO
                if (dr["insideDiameter"] == DBNull.Value)
                {
                    vr.insideDiameter = 0;
                }
                else
                {
                    vr.insideDiameter = Convert.ToDecimal(dr["insideDiameter"]);
                }
                if (dr["outsideDiameter"] == DBNull.Value)
                {
                    vr.outsideDiameter = 0;
                }
                else
                {
                    vr.outsideDiameter = Convert.ToDecimal(dr["outsideDiameter"]);
                }
                vr.ErrCode    = 0;
                vr.ErrMessage = "";

                vl.Add(vr);
            }

            return(vl);
        }
Пример #12
0
        public List <PnCL> getPn(string ident, string aPn)
        {
            List <PnCL> lp = new List <PnCL>();

            if (ident != "")
            {
                CReparator cr      = new CReparator();
                int        identOK = cr.checkIdent(ident);

                if (identOK == -1)
                {
                    PnCL p = new PnCL();
                    p.ErrCode    = -10;
                    p.ErrMessage = "Ogiltigt login";
                    lp.Add(p);
                    return(lp);
                }
            }

            string sSql = " select pn "
                          + " from pn ";

            if (aPn != "")
            {
                sSql += " where pn = :pn ";
            }
            sSql += " order by pn ";

            string errText           = "";
            NxParameterCollection pc = new NxParameterCollection();

            pc.Add("pn", aPn);
            DataTable dt = cdb.getData(sSql, ref errText, pc);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Inga pn finns tillgängliga";
                errCode = 0;
            }

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                PnCL p = new PnCL();
                p.ErrCode    = errCode;
                p.ErrMessage = errText;
                lp.Add(p);
                return(lp);
            }


            foreach (DataRow dr in dt.Rows)
            {
                PnCL p = new PnCL();
                p.Pn         = dr["pn"].ToString();
                p.ErrCode    = 0;
                p.ErrMessage = "";
                lp.Add(p);
            }
            return(lp);
        }
Пример #13
0
        public VentilCL getVentil(string ident, string ventilID, bool validateUser)
        {
            VentilCL vr = new VentilCL();

            if (validateUser)
            {
                CReparator cr = new CReparator();

                int identOK = cr.checkIdent(ident);

                if (identOK == -1)
                {
                    vr.ErrCode    = -10;
                    vr.ErrMessage = "Ogiltigt login";
                    return(vr);
                }
            }

            string sSql = " SELECT v.ventil_id, v.ventilkategori, v.kund_id, v.\"position\", v.fabrikat, v.ventiltyp, v.id_nr, v.pn, v.pn2, v.dn, v.dn2, "
                          + " v.oppningstryck, v.stalldonstyp, v.stalldon_id_nr, v.stalldon_fabrikat, v.stalldon_artnr, v.lagesstallartyp, "
                          + " v.lagesstall_id_nr, v.lagesstall_fabrikat, v.avdelning,  v.anlaggningsnr,  "
                          + " v.forra_comment, vk.ventilkategori as ventilkategori_namn "
                          + " , plan, rum, v.insideDiameter, v.outsideDiameter  "
                          + " FROM ventil v "
                          + " join ventilkategori vk on v.ventilkategori = vk.ventilkat_id "
                          + " where ventil_id = :pVentilID ";

            NxParameterCollection np = new NxParameterCollection();

            np.Add("pVentilID", ventilID);

            string errText = "";

            DataTable dt = cdb.getData(sSql, ref errText, np);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Felaktigt ventilID";
                errCode = 0;
            }


            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                vr.ErrCode    = errCode;
                vr.ErrMessage = errText;
                return(vr);
            }


            DataRow dr = dt.Rows[0];

            vr.VentilID       = dr["ventil_id"].ToString();
            vr.VentilkatID    = Convert.ToInt16(dr["ventilkategori"]);
            vr.Ventilkategori = dr["ventilkategori_namn"].ToString();
            vr.KundID         = dr["kund_id"].ToString();
            vr.Position       = dr["position"].ToString();
            vr.Fabrikat       = dr["fabrikat"].ToString();
            vr.Ventiltyp      = dr["ventiltyp"].ToString();
            vr.IdNr           = dr["id_nr"].ToString();
            vr.Pn             = dr["pn"].ToString();
            vr.Pn2            = dr["pn2"].ToString();
            vr.Dn             = dr["dn"].ToString();
            vr.Dn2            = dr["dn2"].ToString();
            if (dr["oppningstryck"] == DBNull.Value)
            {
                vr.Oppningstryck = 0;
            }
            else
            {
                vr.Oppningstryck = Convert.ToDecimal(dr["oppningstryck"]);
            }
            vr.Stalldonstyp       = dr["stalldonstyp"].ToString();
            vr.StalldonIDNr       = dr["stalldon_id_nr"].ToString();
            vr.StalldonFabrikat   = dr["stalldon_fabrikat"].ToString();
            vr.StalldonArtnr      = dr["stalldon_artnr"].ToString();
            vr.Lagesstallartyp    = dr["lagesstallartyp"].ToString();
            vr.LagesstallIDNr     = dr["lagesstall_id_nr"].ToString();
            vr.LagesstallFabrikat = dr["lagesstall_fabrikat"].ToString();
            vr.Avdelning          = dr["avdelning"].ToString();
            vr.Plan          = dr["plan"].ToString();
            vr.Rum           = dr["rum"].ToString();
            vr.Anlaggningsnr = dr["anlaggningsnr"].ToString();
            // 2017-09-25 KJBO
            if (dr["insideDiameter"] == DBNull.Value)
            {
                vr.insideDiameter = 0;
            }
            else
            {
                vr.insideDiameter = Convert.ToDecimal(dr["insideDiameter"]);
            }
            if (dr["outsideDiameter"] == DBNull.Value)
            {
                vr.outsideDiameter = 0;
            }
            else
            {
                vr.outsideDiameter = Convert.ToDecimal(dr["outsideDiameter"]);
            }
            vr.ErrCode    = 0;
            vr.ErrMessage = "";

            return(vr);
        }
Пример #14
0
        /// <summary>
        /// Get a list of artikel for display purposes
        /// </summary>
        /// <param name="ident">Identity</param>
        /// <param name="ArtnrFilter">Artnr or part of..</param>
        /// <param name="ArtnamnFilter">ArtNamn or part of..</param>
        /// <returns></returns>
        // 2016-02-09 KJBO
        public List <ArtikelCL> getArtList(string ident, string ArtnrFilter, string ArtnamnFilter)
        {
            // Create article list
            List <ArtikelCL> artlist = new List <ArtikelCL>();

            // Get reparator
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                ArtikelCL art = new ArtikelCL();
                art.ErrCode    = -10;
                art.ErrMessage = "Ogiltigt login";
                artlist.Add(art);
                return(artlist);
            }



            // SQL string
            string sSql = " SELECT a.artnr, a.artnamn, a.lev_id, l.levnamn, a.anm1, a.anm2 "
                          + " FROM artikel a "
                          + " left outer join leverantor l on a.lev_id = l.lev_id "
                          + " where upper(a.artnr) like upper(:artnr) "
                          + " and upper(a.artnamn) like upper(:artnamn) "
                          + " and a.visas = true ";

            // Add parameter list
            NxParameterCollection np = new NxParameterCollection();

            np.Add("artnr", CCommonFunc.addWildCard(ArtnrFilter));
            np.Add("artnamn", CCommonFunc.addWildCard(ArtnamnFilter));

            // Init variable
            string errText = "";

            DataTable dt = cdb.getData(sSql, ref errText, np);

            // Init varible
            int errCode = -100;

            // No rows found.....
            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Det finns inga artiklar i aktuellt urval ";
                errCode = 0;
            }

            // No rows found or error when retrieving
            if (errText != "")
            {
                ArtikelCL a = new ArtikelCL();
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                a.ErrCode    = errCode;
                a.ErrMessage = errText;
                artlist.Add(a);
                return(artlist);
            }

            // Loop rows.....
            foreach (DataRow dr in dt.Rows)
            {
                ArtikelCL a = new ArtikelCL();
                a.Artnr   = dr["artnr"].ToString();
                a.Artnamn = dr["artnamn"].ToString();
                a.LevID   = dr["lev_id"].ToString();
                a.LevNamn = dr["levnamn"].ToString();
                a.Anm1    = dr["anm1"].ToString();
                a.Anm2    = dr["anm2"].ToString();
                artlist.Add(a);
            }

            // .. and return list
            return(artlist);
        }
Пример #15
0
        /// <summary>
        /// Saves a reservdel to database.
        /// If ReservNr = 0 then the method
        /// assumes that this is a new row to be added
        /// Otherwise an update is issued
        /// </summary>
        /// <param name="ident">Identity</param>
        /// <param name="reservdel">ReservdelCL</param>
        /// <returns>The new created or updated reservdel</returns>
        //  2016-02-10 KJBO
        public ReservdelCL saveReservdel(string ident, ReservdelCL reservdel)
        {
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            ReservdelCL retRes = new ReservdelCL();

            if (identOK == -1)
            {
                retRes.ErrCode    = -10;
                retRes.ErrMessage = "Ogiltigt login";
                return(retRes);
            }

            // Validate that order is open for editing
            CServiceHuvud ch    = new CServiceHuvud();
            string        sOpen = ch.isOpen(ident, reservdel.VartOrdernr);

            if (sOpen != "1")
            {
                {
                    retRes.ErrCode = -10;
                    if (sOpen == "-1")
                    {
                        retRes.ErrMessage = "Order är stängd för inmatning";
                    }
                    else
                    {
                        retRes.ErrMessage = sOpen;
                    }
                    return(retRes);
                }
            }


            int valid = validateReservdel(reservdel);

            if (valid == -1)
            {
                retRes.ErrCode    = -1;
                retRes.ErrMessage = "Felaktig serviceorder";
                return(retRes);
            }
            if (valid == -10)
            {
                retRes.ErrCode    = -1;
                retRes.ErrMessage = "Fel vid kontroll av reservdel";
                return(retRes);
            }

            if (valid == -2)
            {
                retRes.ErrCode    = -1;
                retRes.ErrMessage = "Reservdel finns inte";
                return(retRes);
            }

            if (valid == -3)
            {
                retRes.ErrCode    = -1;
                retRes.ErrMessage = "Egen reservdel måste ha en benämning";
                return(retRes);
            }

            if (valid == -4)
            {
                retRes.ErrCode    = -1;
                retRes.ErrMessage = "Det finns ingen reservdel på ordernr : " + reservdel.VartOrdernr + "rad : " + reservdel.Radnr.ToString() + " reservdelsrad : " + reservdel.ReservNr.ToString();
                return(retRes);
            }

            string sSql    = "";
            string errText = "";
            int    errCode = 0;

            // This is a new reservdel
            if (reservdel.ReservNr == 0)
            {
                reservdel.ReservNr = getNextReservNr(reservdel);
                sSql = getInsertSQL();
            }
            else
            {
                sSql = getUpdateSQL();
            }


            AddOrDeleteReservdelPyr(reservdel, true, ref errText);
            ReparatorCL           rep = cr.getReparator(ident);
            NxParameterCollection np  = new NxParameterCollection();

            setParameters(np, reservdel, rep.AnvID);

            int iRc = cdb.updateData(sSql, ref errText, np);


            if (errText == "")
            {
                AddOrDeleteReservdelPyr(reservdel, false, ref errText);
                if (errText != "")
                {
                    errText = "Fel vid anrop till addToReservdelPyr. Felmeddelande : " + errText;
                    errCode = -1303;
                }
            }
            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                if (errCode == 0)
                {
                    retRes.ErrCode = -100;
                }
                else
                {
                    retRes.ErrCode = errCode;
                }
                retRes.ErrMessage = errText;
                return(retRes);
            }

            // 2018-05-17 KJBO Check if this is a pyramidOrder
            CMServHuv shuv = new CMServHuv();

            if (shuv.isPyramidOrder(reservdel.VartOrdernr))
            {
                ErrorCL errCl = checkOutIfNeeded(ident, reservdel);
                if (errCl.ErrMessage != "")
                {
                    if (errText.Length > 2000)
                    {
                        errText = errText.Substring(1, 2000);
                    }

                    retRes.ErrCode    = errCl.ErrCode;
                    retRes.ErrMessage = errCl.ErrMessage;
                    return(retRes);
                }



                CompactStore.CCompactStore store = new CompactStore.CCompactStore();
                errCl = store.genCompStoreData(ident, reservdel.VartOrdernr);
                if (errCl.ErrMessage != "" && errCl.ErrCode != 1)
                {
                    if (errText.Length > 2000)
                    {
                        errText = errText.Substring(1, 2000);
                    }

                    retRes.ErrCode    = errCl.ErrCode;
                    retRes.ErrMessage = errCl.ErrMessage;
                    return(retRes);
                }
            }



            return(getReservdel(ident, reservdel.VartOrdernr, reservdel.Radnr, reservdel.ReservNr));
        }
Пример #16
0
        /// <summary>
        /// Get a picture from the database identified by
        /// primary key (vartOrdernr, radnr, bildNr)
        /// Returns a PictCL object with the pictIdent
        /// field with a file name to the file being extracted
        /// by the server.
        /// If the fileName is empty or begins with -1 then
        /// there is an error while extracting the picture from
        /// the database to the temporary storage
        ///
        /// After this function is called there has to be a call
        /// to downloadPicture with the pictIdent as parameter
        /// This function returns the picture to the caller as
        /// a memoryStream
        /// </summary>
        /// <param name="ident"></param>
        /// <param name="vartOrdernr"></param>
        /// <param name="radnr"></param>
        /// <param name="bildNr"></param>
        /// <returns></returns>
        /// 2016-03-09 KJBO
        public PictureCL getPicture(string ident, string vartOrdernr, int radnr, int bildNr)
        {
            PictureCL p = new PictureCL();

            CReparator cr = new CReparator();

            int identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                p.ErrCode    = -10;
                p.ErrMessage = "Ogiltigt login";
                return(p);
            }


            string sSql = " SELECT vart_ordernr, radnr, bild_nr, bild, pictDescript, pictSize, pictType, pictCatID "
                          + " FROM servrad_bild "
                          + " where vart_ordernr = :vart_ordernr "
                          + " and radnr = :radnr "
                          + " and bild_nr = :bild_nr ";

            NxParameterCollection np = new NxParameterCollection();

            np.Add("vart_ordernr", vartOrdernr);
            np.Add("radnr", radnr);
            np.Add("bild_nr", bildNr);

            string errText = "";

            DataTable dt = cdb.getData(sSql, ref errText, np);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Felaktig bildidentitet";
                errCode = 0;
            }


            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                p.ErrCode    = errCode;
                p.ErrMessage = errText;
                return(p);
            }


            DataRow dr = dt.Rows[0];

            p.ErrCode    = 0;
            p.ErrMessage = "";
            string error    = "";
            long   fileSize = 0;

            if (dr["bild"] != DBNull.Value)
            {
                byte[]       data = (byte[])dr["bild"];
                MemoryStream ms   = new MemoryStream(data);
                p.PictIdent = savePictToToFile(ms, ref error, ref fileSize);
            }
            if (error != "")
            {
                p.ErrCode    = -1;
                p.ErrMessage = error;
                return(p);
            }
            p.VartOrdernr = dr["vart_ordernr"].ToString();
            p.Radnr       = Convert.ToInt32(dr["radnr"]);
            p.BildNr      = Convert.ToInt32(dr["bild_nr"]);
            p.Description = dr["pictDescript"].ToString();
            p.pictSize    = Convert.ToInt64(dr["pictSize"]);
            p.pictType    = dr["pictType"].ToString();
            p.PictCatID   = 0;
            if (dr["pictCatID"] != DBNull.Value)
            {
                p.PictCatID = Convert.ToInt32(dr["pictCatID"]);
            }
            return(p);
        }
Пример #17
0
        /// <summary>
        /// Return one artikel
        /// </summary>
        /// <param name="ident">Ident</param>
        /// <param name="Artnr">Artnr</param>
        /// <returns></returns>
        // 2016-02-10 KJBO
        public ArtikelCL getArtikel(string ident, string Artnr)
        {
            ArtikelCL art = new ArtikelCL();

            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                art.ErrCode    = -10;
                art.ErrMessage = "Ogiltigt login";
                return(art);
            }

            string sSql = " SELECT a.artnr, a.artnamn, a.lev_id, l.levnamn, a.anm1, a.anm2, kategori "
                          + " FROM artikel a "
                          + " left outer join leverantor l on a.lev_id = l.lev_id "
                          + " where a.artnr = :artnr "
                          + " and a.visas = true ";

            NxParameterCollection np = new NxParameterCollection();

            np.Add("artnr", Artnr);

            string errText = "";

            DataTable dt = cdb.getData(sSql, ref errText, np);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Artikeln finns ej ";
                errCode = 0;
            }

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                art.ErrCode    = errCode;
                art.ErrMessage = errText;
            }

            if (dt.Rows.Count == 1)
            {
                DataRow dr = dt.Rows[0];
                art.Artnr    = dr["artnr"].ToString();
                art.Artnamn  = dr["artnamn"].ToString();
                art.LevID    = dr["lev_id"].ToString();
                art.LevNamn  = dr["levnamn"].ToString();
                art.Anm1     = dr["anm1"].ToString();
                art.Anm2     = dr["anm2"].ToString();
                art.kategori = Convert.ToInt32(dr["kategori"]);
            }


            return(art);
        }
Пример #18
0
        public List <DnCL> getDn(string ident, string aDn)
        {
            List <DnCL> ld = new List <DnCL>();

            if (ident != "")
            {
                CReparator cr      = new CReparator();
                int        identOK = cr.checkIdent(ident);

                if (identOK == -1)
                {
                    DnCL d = new DnCL();

                    d.ErrCode    = -10;
                    d.ErrMessage = "Ogiltigt login";
                    ld.Add(d);
                    return(ld);
                }
            }

            string sSql = " select dn "
                          + " from dn ";

            if (aDn != "")
            {
                sSql += " where dn = :dn ";
            }
            sSql += " order by dn ";
            string errText           = "";
            NxParameterCollection pc = new NxParameterCollection();

            if (aDn != "")
            {
                pc.Add("dn", aDn);
            }
            DataTable dt = cdb.getData(sSql, ref errText, pc);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Inga dn finns tillgängliga";
                errCode = 0;
            }

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                DnCL d = new DnCL();
                d.ErrCode    = errCode;
                d.ErrMessage = errText;
                ld.Add(d);
                return(ld);
            }

            foreach (DataRow dr in dt.Rows)
            {
                DnCL d = new DnCL();
                d.Dn         = dr["dn"].ToString();
                d.ErrCode    = 0;
                d.ErrMessage = "";
                ld.Add(d);
            }
            return(ld);
        }
Пример #19
0
        /// <summary>
        /// Return all salarts either for servicedetalj or serviceorder
        /// </summary>
        /// <param name="ident"></param>
        /// <param name="forServiceDetalj"></param>
        /// <returns>List of salart or error code</returns>
        public List <SalartCL> getSalart(string ident, bool forServiceDetalj)
        {
            List <SalartCL> ls      = new List <SalartCL>();
            CReparator      cr      = new CReparator();
            int             identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                SalartCL s = new SalartCL();
                s.ErrCode    = -10;
                s.ErrMessage = "Ogiltigt login";
                ls.Add(s);
                return(ls);
            }


            string sSql = " SELECT SalartID, SalartTypeID, SalartName, enhet "
                          + " FROM Salart ";

            if (forServiceDetalj)
            {
                sSql += "where SalartTypeID = 1";
            }
            else
            {
                sSql += "where SalartTypeID > 1";
            }


            string errText = "";

            DataTable dt = cdb.getData(sSql, ref errText);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Lönearter finns tillgängliga";
                errCode = 0;
            }

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                SalartCL s = new SalartCL();
                s.ErrCode    = errCode;
                s.ErrMessage = errText;
                ls.Add(s);
                return(ls);
            }


            foreach (DataRow dr in dt.Rows)
            {
                SalartCL s = new SalartCL();
                s.SalartID     = Convert.ToInt32(dr["SalartID"]);
                s.SalartTypeID = Convert.ToInt32(dr["SalartTypeID"]);
                s.SalartName   = dr["SalartName"].ToString();
                s.Unit         = dr["enhet"].ToString();
                s.ErrCode      = 0;
                s.ErrMessage   = "";
                ls.Add(s);
            }
            return(ls);
        }
Пример #20
0
        public List <FabrikatCL> getFabrikat(string ident, string fabrikat)
        {
            List <FabrikatCL> lf = new List <FabrikatCL>();

            if (ident != "")
            {
                CReparator cr      = new CReparator();
                int        identOK = cr.checkIdent(ident);

                if (identOK == -1)
                {
                    FabrikatCL f = new FabrikatCL();
                    f.ErrCode    = -10;
                    f.ErrMessage = "Ogiltigt login";
                    lf.Add(f);
                    return(lf);
                }
            }

            string sSql = " select fabrikat "
                          + " from fabrikat ";

            if (fabrikat != "")
            {
                sSql += " where fabrikat = :fabrikat ";
            }
            sSql += " order by fabrikat ";

            string errText           = "";
            NxParameterCollection pc = new NxParameterCollection();

            if (fabrikat != "")
            {
                pc.Add("fabrikat", fabrikat);
            }
            DataTable dt = cdb.getData(sSql, ref errText, pc);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Inga fabrikat finns tillgängliga";
                errCode = 0;
            }

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                FabrikatCL f = new FabrikatCL();
                f.ErrCode    = errCode;
                f.ErrMessage = errText;
                lf.Add(f);
                return(lf);
            }


            foreach (DataRow dr in dt.Rows)
            {
                FabrikatCL f = new FabrikatCL();
                f.Fabrikat   = dr["fabrikat"].ToString();
                f.ErrCode    = 0;
                f.ErrMessage = "";
                lf.Add(f);
            }
            return(lf);
        }
Пример #21
0
        public List <ListServHuvCL> getServHuv(string ident, int selType)
        {
            List <ListServHuvCL> shList = new List <ListServHuvCL>();

            CReparator cr = new CReparator();

            int identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                ListServHuvCL sh = new ListServHuvCL();
                sh.ErrCode    = -10;
                sh.ErrMessage = "Ogiltigt login";
                shList.Add(sh);
                return(shList);
            }

            string sSql = "SELECT ";

            if (selType == 0)
            {
                sSql += "top 30 ";
            }
            sSql += "sh.vart_ordernr, sh.ert_ordernr, sh.datum, k.kund + ', ' + coalesce(k.stad,'') + ', ' + k.foretagskod kund, sh.regdat "
                    + " , sh.AllRep, coalesce(sh.sentToPyramid,false) sentToPyramid, coalesce(sh.pyramidError,'') pyramidError, coalesce(sh.orderLabel,'') orderLabel "
                    + " FROM ServiceHuvud sh "
                    + " join kund k on sh.kund = k.kund_id "
                    + " where sh.openForApp = true "
                    + " and sentToPyramid is not null ";
            if (selType == 2)
            {
                sSql += " and sh.godkand = false ";
            }
            sSql += " group by sh.vart_ordernr, sh.ert_ordernr, sh.datum, k.kund, k.stad, k.kund_id, sh.regdat, sh.AllRep, k.foretagskod, sh.sentToPyramid, sh.pyramidError, orderLabel  "
                    + " order by sh.regdat desc ";

            string    errText = "";
            DataTable dt      = cdb.getData(sSql, ref errText);

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                ListServHuvCL sh = new ListServHuvCL();
                sh.ErrCode    = -1;
                sh.ErrMessage = errText;
                shList.Add(sh);
                return(shList);
            }

            foreach (DataRow dr in dt.Rows)
            {
                ListServHuvCL sh = new ListServHuvCL();
                sh.vart_ordernr = dr["vart_ordernr"].ToString();
                sh.ert_ordernr  = dr["ert_ordernr"].ToString();
                sh.kund         = dr["kund"].ToString();
                sh.orderDate    = Convert.ToDateTime(dr["datum"]).ToShortDateString();
                // 2018-11-09
                sh.orderLabel    = dr["orderLabel"].ToString();
                sh.ErrCode       = 0;
                sh.ErrMessage    = "";
                sh.reparator_msg = "1";
                if (Convert.ToBoolean(dr["AllRep"]) == false)
                {
                    int antal = countReparator(sh.vart_ordernr);
                    if (antal == -1)
                    {
                        sh.reparator_msg = "-1";
                    }
                    if (antal > 0)
                    {
                        sh.reparator_msg = antal.ToString();
                    }
                    else
                    {
                        sh.reparator_msg = "0";
                    }
                }
                int countTr = hasTimeReport(sh.vart_ordernr);
                if (countTr == -1)
                {
                    sh.week_msg = "-1";
                }
                if (countTr == 1)
                {
                    sh.week_msg = "1";
                }
                else
                {
                    sh.week_msg = "0";
                }
                sh.sentToPyramid = Convert.ToBoolean(dr["sentToPyramid"]);
                sh.pyramidError  = dr["pyramidError"].ToString();
                shList.Add(sh);
            }

            return(shList);
        }
Пример #22
0
        /// <summary>
        /// Get one servicehuvud and return
        /// </summary>
        /// <param name="ident">identity</param>
        /// <param name="vartOrdernr">vart_ordernr</param>
        /// <returns></returns>
        public ServiceHuvudCL getServHuv(string ident, string vartOrdernr)
        {
            CReparator cr = new CReparator();

            int identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                ServiceHuvudCL sh2 = new ServiceHuvudCL();
                sh2.ErrCode    = -10;
                sh2.ErrMessage = "Ogiltigt login";
                return(sh2);
            }

            string sSql = " SELECT sh.vart_ordernr, sh.ert_ordernr, sh.kund, c.kund as kundnamn, sh.datum, sh.orderAdmin, "
                          + " r.reparator, sh.allrep, coalesce(sh.orderLabel,'') orderLabel "
                          + " FROM ServiceHuvud sh "
                          + " join kund c on sh.kund = c.kund_id "
                          + " left outer join reparator r on sh.orderAdmin = r.AnvID "
                          + " where godkand = false "
                          + " and posttyp = 1 "
                          + " and OpenForApp = true "
                          + " and sh.vart_ordernr = :pVartOrdernr";

            NxParameterCollection np = new NxParameterCollection();

            np.Add("pVartOrdernr", vartOrdernr);


            string errText = "";

            DataTable dt = cdb.getData(sSql, ref errText, np);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Felaktigt Ordernr";
                errCode = 0;
            }


            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                ServiceHuvudCL sh2 = new ServiceHuvudCL();
                sh2.ErrCode    = errCode;
                sh2.ErrMessage = errText;
                return(sh2);
            }

            DataRow dr = dt.Rows[0];

            ServiceHuvudCL sh = new ServiceHuvudCL();

            sh.VartOrdernr    = dr["vart_ordernr"].ToString();
            sh.ErtOrdernr     = dr["ert_ordernr"].ToString();
            sh.Kund           = dr["kund"].ToString();
            sh.KundNamn       = dr["kundnamn"].ToString();
            sh.OrderDatum     = Convert.ToDateTime(dr["datum"]);
            sh.OrderAdminID   = dr["orderAdmin"].ToString();
            sh.OrderAdminNamn = dr["reparator"].ToString();
            sh.OrderLabel     = dr["orderLabel"].ToString();
            sh.ErrCode        = 0;
            sh.ErrMessage     = "";
            return(sh);
        }
Пример #23
0
        /// <summary>
        /// Saves a picture to the database
        /// This method shall be called directory after
        /// a call to UploadPict
        /// The UploadPict gives you (upon success)
        /// an identity (=filename) to the upoaded file
        /// This identity is provided to this function
        /// in the PictureCL class
        /// If PictureCL.bildnr = 0 indicates new picture
        /// Otherwise providing picture number indicates update
        ///
        /// </summary>
        /// <param name="ident"></param>
        /// <param name="p"></param>
        /// <returns></returns>
        //  2016-03-07 KJBO
        public PictureCL savePicture(string ident, PictureCL p)
        {
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            // Creates a class to return an error
            PictureCL pN = new PictureCL();

            if (identOK == -1)
            {
                deletePict(p.PictIdent);
                pN.ErrCode    = -10;
                pN.ErrMessage = "Ogiltigt login";
                return(pN);
            }

            // Init variable
            string err   = "";
            int    valid = validatePicture(p, false, false, ref err);

            if (valid == -1 || valid == -2 || valid == -5)
            {
                deletePict(p.PictIdent);
                pN.ErrCode    = -1;
                pN.ErrMessage = "Kan ej hitta order";
                return(pN);
            }
            if (valid == -4)
            {
                deletePict(p.PictIdent);
                pN.ErrCode    = -1;
                pN.ErrMessage = "Bildnummer saknas för aktuell servicerad";
                return(pN);
            }

            if (valid == -6)
            {
                pN.ErrCode    = -1;
                pN.ErrMessage = "Bild saknas i uppladdningbiblioteket";
                return(pN);
            }


            if (valid == -7)
            {
                pN.ErrCode    = -1;
                pN.ErrMessage = "Felaktig bildkategori (PictCatID) ";
                return(pN);
            }

            CServiceHuvud ch    = new CServiceHuvud();
            string        sOpen = ch.isOpen(ident, p.VartOrdernr);

            if (sOpen != "1")
            {
                {
                    deletePict(p.PictIdent);
                    pN.ErrCode = -10;
                    if (sOpen == "-1")
                    {
                        pN.ErrMessage = "Order är stängd för inmatning";
                    }
                    else
                    {
                        pN.ErrMessage = sOpen;
                    }
                    return(pN);
                }
            }

            string sSql = "";

            if (p.BildNr == 0)
            {
                // This is a new bild
                p.BildNr = getNextBildNr(p);

                sSql = getInsertSQL();
            }
            else
            {
                sSql = getUpdateSQL(true);
            }
            NxParameterCollection np = new NxParameterCollection();

            setParameters(np, p, true);

            string errText = "";

            int iRc = cdb.updateData(sSql, ref errText, np);

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                pN.ErrCode    = -100;
                pN.ErrMessage = errText;
                return(pN);
            }
            deletePict(p.PictIdent);
            return(p);
        }
Пример #24
0
        /// <summary>
        /// Get the current timeRegVersion
        /// can be either 1 or 2
        /// </summary>
        /// <param name="ident"></param>
        /// <param name="vartOrdernr"></param>
        /// <returns>Version or -1 for invalid ident or -2 for database error
        /// (no more error description is available for this function</returns>
        public int getTimeRegVersion(string ident, string vartOrdernr)
        {
            // Check identity
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                return(-1);
            }

            // Check if any either tidrapp (version1) or timeReport2 (version 2) that is available
            string sSql = " select 1 version "
                          + " from tidrapp "
                          + " where vart_ordernr = :vart_ordernr "
                          + " union "
                          + " SELECT 2 "
                          + " FROM timeReport2 "
                          + " where vart_ordernr = :vart_ordernr ";
            NxParameterCollection pc = new NxParameterCollection();

            pc.Add("vart_ordernr", vartOrdernr);
            CDB    cdb   = new CDB();
            string errSt = "";

            // Get the result (or error)
            DataTable dt = cdb.getData(sSql, ref errSt, pc);

            // If any error then return -2
            if (errSt != "")
            {
                return(-2);
            }

            // count result rows (shall be either 1 or 0)
            if (dt.Rows.Count > 0)
            {
                DataRow dr = dt.Rows[0];
                return(Convert.ToInt16(dr["version"]));
            }

            // If no rows was found above then check the timeRegVersion setting in the version table
            sSql = sSql = " SELECT timeRegVersion "
                          + " FROM \"Version\" ";

            errSt = "";
            dt    = cdb.getData(sSql, ref errSt);

            // Error handling
            if (errSt != "")
            {
                return(-2);
            }

            // If row is found....
            if (dt.Rows.Count > 0)
            {
                return(Convert.ToInt16(dt.Rows[0]["timeRegVersion"]));
            }

            // If nothing is found then we are on version 1
            return(1);
        }
Пример #25
0
        /// <summary>
        /// General hub for retrieving reservdel
        /// </summary>
        /// <param name="ident"></param>
        /// <param name="VartOrdernr"></param>
        /// <param name="RadNr"></param>
        /// <param name="ReservNr"></param>
        /// <returns>A list of reservdel or error</returns>
        private List <ReservdelCL> getReservdelGeneral(string ident, string VartOrdernr, int RadNr, int ReservNr)
        {
            List <ReservdelCL> reslist = new List <ReservdelCL>();


            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                ReservdelCL res = new ReservdelCL();
                res.ErrCode    = -10;
                res.ErrMessage = "Ogiltigt login";
                reslist.Add(res);
                return(reslist);
            }

            // Build sql string depending on parameters. -1 as ReservNr means return all reservdel for one
            // ServiceRad.
            string sSql = " select vart_ordernr, radnr, reserv_nr, antal, artnr, artnamn, faktureras, lev_id, enhet "
                          + " , reg, regdat, uppdaterat, uppdat_dat, skriv_nu, getFromCS "
                          + " from reservdel "
                          + " where vart_ordernr = :vart_ordernr "
                          + " and radnr = :radnr ";

            if (ReservNr > -1)
            {
                sSql += " and reserv_nr = :reserv_nr ";
            }

            // Create parameters
            NxParameterCollection np = new NxParameterCollection();

            np.Add("vart_ordernr", VartOrdernr);
            np.Add("radnr", RadNr);
            if (ReservNr > -1)
            {
                np.Add("reserv_nr", ReservNr);
            }

            string errText = "";

            DataTable dt = cdb.getData(sSql, ref errText, np);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                if (ReservNr == -1)
                {
                    errText = "Det finns inga reservdelar i aktuellt urval ";
                }
                else
                {
                    errText = "Reservdel med ID VartOrdernr : " + VartOrdernr + ", RadNr : " + RadNr.ToString() + ", ReservNr : " + ReservNr.ToString() + " finns ej.";
                }
                errCode = 0;
            }

            if (errText != "")
            {
                ReservdelCL res = new ReservdelCL();
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                res.ErrCode    = errCode;
                res.ErrMessage = errText;
                reslist.Add(res);
                return(reslist);
            }

            foreach (DataRow dr in dt.Rows)
            {
                ReservdelCL res = new ReservdelCL();
                res.Antal       = 1;
                res.Faktureras  = true;
                res.getFromCS   = false;
                res.VartOrdernr = dr["vart_ordernr"].ToString();
                res.Radnr       = Convert.ToInt32(dr["radnr"]);
                res.ReservNr    = Convert.ToInt32(dr["reserv_nr"]);
                if (dr["antal"] != DBNull.Value)
                {
                    res.Antal = Convert.ToDecimal(dr["antal"]);
                }
                res.Artnr   = dr["artnr"].ToString();
                res.ArtNamn = dr["artnamn"].ToString();
                if (dr["faktureras"] != DBNull.Value)
                {
                    res.Faktureras = Convert.ToBoolean(dr["faktureras"]);
                }
                if (dr["getFromCS"] != DBNull.Value)
                {
                    res.getFromCS = Convert.ToBoolean(dr["getFromCS"]);
                }
                res.LevID = dr["lev_id"].ToString();
                res.Enhet = dr["enhet"].ToString();
                reslist.Add(res);
            }

            return(reslist);
        }
Пример #26
0
        /// <summary>
        /// Delete a picture from the database identified by
        /// values provided in the PictureCL parameter
        /// vartOrdernr
        /// radnr
        /// bildNr
        ///
        /// Note that the pictIdent parameter doesnt need to
        /// be filled in this case.
        ///
        ///
        /// The method returns an empty picture class if
        /// everything is OK
        /// If anything goes wrong the errCode and the errMessage
        /// will give further information.
        /// </summary>
        /// <param name="ident"></param>
        /// <param name="p"></param>
        /// <returns></returns>
        /// 2016-03-11 Pergas AB KJBO
        public PictureCL deletePicture(string ident, PictureCL p)
        {
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            // Creates a class to return an error
            PictureCL pN = new PictureCL();

            if (identOK == -1)
            {
                pN.ErrCode    = -10;
                pN.ErrMessage = "Ogiltigt login";
                return(pN);
            }

            // Init variable
            string err   = "";
            int    valid = validatePicture(p, true, false, ref err);

            if (valid == -4 || valid == -3)
            {
                pN.ErrCode    = -1;
                pN.ErrMessage = "Det finns ingen bild lagrad för vårt ordernr : " + p.VartOrdernr + ", radnr : " + p.Radnr.ToString() + " bild nr : " + p.BildNr.ToString();
                return(pN);
            }

            CServiceHuvud ch    = new CServiceHuvud();
            string        sOpen = ch.isOpen(ident, p.VartOrdernr);

            if (sOpen != "1")
            {
                {
                    deletePict(p.PictIdent);
                    pN.ErrCode = -10;
                    if (sOpen == "-1")
                    {
                        pN.ErrMessage = "Order är stängd för inmatning";
                    }
                    else
                    {
                        pN.ErrMessage = sOpen;
                    }
                    return(pN);
                }
            }


            string sSql = "";


            sSql = " delete from servrad_bild "
                   + " where vart_ordernr = :vart_ordernr "
                   + " and radnr = :radnr "
                   + " and bild_nr = :bild_nr ";

            NxParameterCollection np = new NxParameterCollection();

            setParameters(np, p, false);

            string errText = "";

            int iRc = cdb.updateData(sSql, ref errText, np);

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                pN.ErrCode    = -100;
                pN.ErrMessage = errText;
                return(pN);
            }

            p.VartOrdernr = "";
            p.Radnr       = 0;
            p.BildNr      = 0;
            p.PictIdent   = "";
            p.ErrCode     = 0;
            p.ErrMessage  = "";
            p.Description = "";
            p.PictCatID   = 0;
            return(p);
        }
Пример #27
0
        /// <summary>
        /// Deletes a reservdel identified by primary key
        /// </summary>
        /// <param name="ident">identity string</param>
        /// <param name="reservdel">One valid reservdel</param>
        /// <returns>Empty string if OK otherwise error message</returns>
        public string deleteReservdel(string ident, ReservdelCL reservdel)
        {
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            ReservdelCL retRes = new ReservdelCL();

            if (identOK == -1)
            {
                return("Ogiltigt login");
            }

            // Validate that order is open for editing
            CServiceHuvud ch    = new CServiceHuvud();
            string        sOpen = ch.isOpen(ident, reservdel.VartOrdernr);

            if (sOpen != "1")
            {
                {
                    retRes.ErrCode = -10;
                    if (sOpen == "-1")
                    {
                        return("Order är stängd för inmatning");
                    }
                    else
                    {
                        return(sOpen);
                    }
                }
            }


            int exists = validateReservdelExists(reservdel);

            if (exists == 0)
            {
                return("Reservdel finns ej");
            }

            string sSql = "";

            sSql = getDeleteSQL();

            NxParameterCollection np = new NxParameterCollection();

            setParameters(np, reservdel, "");

            string errText = "";

            AddOrDeleteReservdelPyr(reservdel, true, ref errText);

            if (errText == "")
            {
                cdb.updateData(sSql, ref errText, np);
            }

            if (errText != "")
            {
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }

                return(errText);
            }

            return("");
        }
Пример #28
0
        /// <summary>
        /// This method returns all pictures for one servicerad
        /// Note that you dont get the actual picture nor the
        /// pictIdent. Instead you use this method for getting a
        /// list of available pictures (and also gets the picture
        /// description).
        /// After that you have to call GetPicture and download picture
        /// in turn in order to get each individual picture.
        /// The reason for this is performance. This method gives
        /// a fast list of available pictures only.
        /// </summary>
        /// <param name="ident"></param>
        /// <param name="vartOrdernr"></param>
        /// <param name="radnr"></param>
        /// <returns></returns>
        /// 2016-03-11 Pergas AB kjbo
        public List <PictureCL> getPicturesForServiceRad(string ident, string vartOrdernr, int radnr)
        {
            List <PictureCL> pList = new List <PictureCL>();

            CReparator cr = new CReparator();

            int identOK = cr.checkIdent(ident);

            if (identOK == -1)
            {
                PictureCL p = new PictureCL();
                p.ErrCode    = -10;
                p.ErrMessage = "Ogiltigt login";
                pList.Add(p);
                return(pList);
            }


            string sSql = " SELECT vart_ordernr, radnr, bild_nr, bild, pictDescript, pictSize, pictType, pictCatID "
                          + " FROM servrad_bild "
                          + " where vart_ordernr = :vart_ordernr "
                          + " and radnr = :radnr ";


            NxParameterCollection np = new NxParameterCollection();

            np.Add("vart_ordernr", vartOrdernr);
            np.Add("radnr", radnr);

            string errText = "";

            DataTable dt = cdb.getData(sSql, ref errText, np);

            int errCode = -100;

            if (errText == "" && dt.Rows.Count == 0)
            {
                errText = "Det finns inga bilder för aktuell servicerad";
                errCode = 0;
            }


            if (errText != "")
            {
                PictureCL p = new PictureCL();
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                p.ErrCode    = errCode;
                p.ErrMessage = errText;
                pList.Add(p);
                return(pList);
            }


            foreach (DataRow dr in dt.Rows)
            {
                PictureCL p = new PictureCL();
                p.ErrCode     = 0;
                p.ErrMessage  = "";
                p.VartOrdernr = dr["vart_ordernr"].ToString();
                p.Radnr       = Convert.ToInt32(dr["radnr"]);
                p.BildNr      = Convert.ToInt32(dr["bild_nr"]);
                p.Description = dr["pictDescript"].ToString();
                p.pictSize    = Convert.ToInt64(dr["pictSize"]);
                p.pictType    = dr["pictType"].ToString();
                p.PictCatID   = 0;
                if (dr["pictCatID"] != DBNull.Value)
                {
                    p.PictCatID = Convert.ToInt32(dr["pictCatID"]);
                }
                pList.Add(p);
            }

            return(pList);
        }
Пример #29
0
        /// <summary>
        /// Returns all standardtext
        /// </summary>
        /// <param name="ident"></param>
        /// <returns></returns>
        public List <StandardTextCL> getAllSttText(string ident)
        {
            CReparator cr      = new CReparator();
            int        identOK = cr.checkIdent(ident);

            List <StandardTextCL> stList = new List <StandardTextCL>();

            if (identOK == -1)
            {
                StandardTextCL st = new StandardTextCL();
                st.ErrCode       = -10;
                st.ErrMessage    = "Ogiltigt login";
                st.StdTextID     = "";
                st.Text          = "";
                st.Kategori      = 0;
                st.KategoriBeskr = "";
                st.ventilkatID   = 0;
                stList.Add(st);
                return(stList);
            }

            string sSql = " SELECT stdtext_id, \"text\", kategori, ventilkategori "
                          + " FROM standardtext ";

            string    errSt = "";
            DataTable dt    = cdb.getData(sSql, ref errSt);

            if (errSt != "")
            {
                if (errSt.Length > 2000)
                {
                    errSt = errSt.Substring(1, 2000);
                }

                StandardTextCL st = new StandardTextCL();
                st.StdTextID     = "";
                st.Text          = "";
                st.Kategori      = 0;
                st.KategoriBeskr = "";
                st.ventilkatID   = 0;
                st.ErrCode       = -100;
                st.ErrMessage    = "Databasfel : " + errSt;
                stList.Add(st);
                return(stList);
            }

            foreach (DataRow dr in dt.Rows)
            {
                int            kategori = Convert.ToInt32(dr["kategori"]);
                StandardTextCL st       = new StandardTextCL();
                st.StdTextID     = dr["stdtext_id"].ToString();
                st.Text          = dr["text"].ToString();
                st.Kategori      = kategori;
                st.KategoriBeskr = getKatName(kategori);
                st.ventilkatID   = 0;
                if (dr["ventilkategori"] == DBNull.Value)
                {
                    st.ventilkatID = 0;
                }
                else
                {
                    st.ventilkatID = Convert.ToInt32(dr["ventilkategori"]);
                }
                st.ErrCode    = 0;
                st.ErrMessage = "";
                stList.Add(st);
            }

            return(stList);
        }
Пример #30
0
        /// <summary>
        /// Function to get a list of picture categories
        /// The step parameter indicates the step in the
        /// documentation where the different categories are available
        /// as follows
        /// 1 : Check before service
        /// 2 : Service job done
        /// 3 : Other remarks
        /// 4 : Spare parts
        /// 0 : Anywhere (no matter where the picture is taken i the process)
        ///
        /// If Step is set to 0 you get all possible categories in return
        /// Otherwise you get the categories for the current step as well as
        /// category all categories with step 0.
        /// Note that it is required with 2 pictures (of differend categories)
        /// for step no 1 in the process
        /// </summary>
        /// <param name="ident"></param>
        /// <param name="Step"></param>
        /// <returns></returns>
        public List <PictCatCL> getPictCategories(string ident, int Step)
        {
            List <PictCatCL> pcl = new List <PictCatCL>();
            CReparator       cr  = new CReparator();
            int identOK          = cr.checkIdent(ident);

            if (identOK == -1)
            {
                PictCatCL p = new PictCatCL();
                p.ErrCode    = -10;
                p.ErrMessage = "Ogiltigt login";
                pcl.Add(p);
                return(pcl);
            }

            NxParameterCollection pc = new NxParameterCollection();

            // if argument Step = 0 then return all rows
            // otherwise return all rows matching the current step
            // and all steps with value of 0
            string sSql = " SELECT PictCatID, PictCatName, Step "
                          + " FROM PictCategory ";

            if (Step > 0)
            {
                sSql += " where step = :step "
                        + " or step = 0 ";


                pc.Add("step", Step);
            }


            string errText = "";

            DataTable dt = cdb.getData(sSql, ref errText, pc);

            if (errText != "")
            {
                PictCatCL p = new PictCatCL();
                if (errText.Length > 2000)
                {
                    errText = errText.Substring(1, 2000);
                }
                p.ErrCode    = -100;
                p.ErrMessage = errText;
                pcl.Add(p);
                return(pcl);
            }

            foreach (DataRow dr in dt.Rows)
            {
                PictCatCL p = new PictCatCL();
                p.PictCatID   = Convert.ToInt32(dr["PictCatID"]);
                p.PictCatName = dr["PictCatName"].ToString();
                p.Step        = Convert.ToInt16(dr["Step"]);
                p.ErrCode     = 0;
                p.ErrMessage  = "";
                pcl.Add(p);
            }

            return(pcl);
        }