using BapPress.BapService.ServiceMessages; using BapFramework.Data.Generic; using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Linq; using System.Runtime.InteropServices; namespace BapPress.BapService.Services.SPL { [Guid("622735FF-F92A-441A-988E-68A185FF819C")] public class CBPO : ScheduleBase { //private Dictionary DcTypes; public CBPO(string constr) : base(constr) { System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; //DcTypes = new Dictionary(); //DcTypes.Add(11, "SALONY EMPIK"); //DcTypes.Add(3, "PACZKOMATY"); //DcTypes.Add(15, "POCZTA ODBIORY"); //DcTypes.Add(16, "POCZTA ORLEN"); //DcTypes.Add(18, "POCZTA ŻABKI"); //DcTypes.Add(17, "PUNKTY ODBIORU LIVRO"); //DcTypes.Add(9, "PUNKTY ODBIORU MOLE MOLE "); } protected override bool Job() { ConnectionBase SPLConn = ConnectionBase.GetConnection(ConnectionString, true); Recpoints.Recpoints_pttClient client = new Recpoints.Recpoints_pttClient("Recpoints_bindingQSPort", Properties.Settings.Default.CBPO_WebService.Value); //client.ClientCredentials.UserName.UserName = Properties.Settings.Default.CBPO_User.Value; //client.ClientCredentials.UserName.Password = Properties.Settings.Default.CBPO_Pass.Value; client.ClientCredentials.UserName.UserName = Properties.Settings.Default.CBPO_User.Value; client.ClientCredentials.UserName.Password = Properties.Settings.Default.CBPO_Pass.Value; #if DEBUG //dodane w celu podglądu zapytanie i odpowiedzi SOAP (klasa SimpleMessageInspector) client.Endpoint.Behaviors.Add(new SimpleEndpointBehavior()); #endif DataTable ClientKinds = SPLConn.GetTable("select CBPO_DCTYPE, \"Name\", \"Description\" from dba.clientkinds where CBPO_DCTYPE is not null;"); foreach (DataRow kind in ClientKinds.Rows) { Recpoints.RecpointsRequest_msg msg = new Recpoints.RecpointsRequest_msg(); msg.RECPOINTSREQUEST = new Recpoints.RECPOINTSREQUEST() { QUERY = new Recpoints.RECPOINTSREQUESTFIELD[] { new Recpoints.RECPOINTSREQUESTFIELD(){ NAME="DCTYPE", VALUE=kind["CBPO_DCTYPE"].ToString()} } }; //msg.RECPOINTSREQUEST = ""; //msg.RECPOINTSREQUEST = new Recpoints.RECPOINTSREQUEST(); SendMessage(MessageType.Info, $"Wczytuję {kind["Description"]}"); Recpoints.RecpointsResponse_msg resp = client.getRecpoints(msg); //MD - zapisanie xml-a do pliku if (Properties.Settings.Default.CBPO_ToXML.Value == "1") { SendMessage(MessageType.Info, "Zapisuję do pliku"); System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(Recpoints.RecpointsResponse_msg)); System.IO.StreamWriter file = new System.IO.StreamWriter(Properties.Settings.Default.CBPO_ToXMLFile.Value + "_" + kind["CBPO_DCTYPE"].ToString()); writer.Serialize(file, resp); file.Close(); SendMessage(MessageType.Info, "Zapisane do pliku " + Properties.Settings.Default.CBPO_ToXMLFile.Value); return true; } else { // koniec Recpoints.RECPOINTSRECPOINT[] points = resp.RECPOINTS; if (points != null) { DbCommand cmd = null; DbParameter param = null; //Dictionary dc_cnt = new Dictionary(); //dc_cnt.Add(0, 0); //dc_cnt.Add(11, 0); //dc_cnt.Add(3, 0); //dc_cnt.Add(15, 0); //dc_cnt.Add(16, 0); //dc_cnt.Add(17, 0); //dc_cnt.Add(18, 0); //dc_cnt.Add(9, 0); int cnt = 1; int max = points.Length; //int o = 0; SendMessage(MessageType.Info, string.Format("Przetwarzam {0} punktów", max)); foreach (Recpoints.RECPOINTSRECPOINT point in points) { if (StopPending) break; //if (DcTypes.ContainsKey(point.RECPOINTSHEADER.DCTYPE)) //{ try { cmd = SPLConn.Connection.CreateCommand(); cmd.CommandText = "DBA.IP_UpdateSalonInfo"; cmd.CommandType = CommandType.StoredProcedure; param = cmd.CreateParameter(); param.ParameterName = "@RefCBPO"; param.Value = point.RECPOINTSHEADER.DCID; cmd.Parameters.Add(param); param = cmd.CreateParameter(); param.ParameterName = "@RefNumber"; //if (point.RECPOINTSHEADER.DCTYPE == 12) // param.Value = "S" + point.RECPOINTSHEADER.EXTID1.PadLeft(4, '0'); //else param.Value = point.RECPOINTSHEADER.EXTID1;//.PadLeft(5, '0'); //; cmd.Parameters.Add(param); param = cmd.CreateParameter(); param.ParameterName = "@SalonType"; param.Value = point.RECPOINTSHEADER.DCTYPE; cmd.Parameters.Add(param); /* Typ Punktu Odbioru: 1 - Kurier (UPS) 2 - POCZTA 3 - PACZKOMAT 11 - SALON EMPIK 12 - SALON SMYK - już nie używany 15 - siecPlacowek="POCZTAPOLSKA" 16 - siecPlacowek="ORLEN" 18 – siecPlacowek=’ZABKA’ 17 - PUNKT ODBIORU livro 9 - Punkt Odbioru Mole Mole */ param = cmd.CreateParameter(); param.ParameterName = "@Name"; //if (point.RECPOINTSHEADER.DCTYPE == 11) param.Value = point.ADDRESS.NAME; //else //param.Value = point.RECPOINTSHEADER.EXTID1; cmd.Parameters.Add(param); param = cmd.CreateParameter(); param.ParameterName = "@Email"; if (point.COMMUNICATION.COMMITEMS.Length > 0) param.Value = point.COMMUNICATION.COMMITEMS[0].COMMADD; else { param.DbType = DbType.String; param.Value = DBNull.Value; } cmd.Parameters.Add(param); param = cmd.CreateParameter(); param.ParameterName = "@StreetName"; param.Value = point.ADDRESS.ADDR; cmd.Parameters.Add(param); param = cmd.CreateParameter(); param.ParameterName = "@ZIP"; param.Value = point.ADDRESS.POSTCODE; cmd.Parameters.Add(param); param = cmd.CreateParameter(); param.ParameterName = "@TownName"; param.Value = point.ADDRESS.CITY; cmd.Parameters.Add(param); //Log("DBA.SPL_UpdateSalonInfo(" // + row["RefNumber"].ToString() + "," // + row["ShortName"].ToString() + "," // + row["Name"].ToString() + "," // + row["E_mail"].ToString() + "," // + row["StreetName"].ToString() + "," // + row["ZIP"].ToString() + "," // + row["TownName"].ToString() + ")"); cmd.ExecuteNonQuery(); cmd.Dispose(); } catch (Exception ex) { Log(MessageType.Error, "CBPO", ex.Message, ex.StackTrace); } SendMessage(MessageType.Count, "Punkt(" + point.RECPOINTSHEADER.DCID.ToString() + ") - " + cnt.ToString() + " z " + max.ToString()); // dc_cnt[point.RECPOINTSHEADER.DCTYPE]++; //} //else // dc_cnt[0]++; cnt++; } //SendMessage(MessageType.Info, string.Format("Wczytano {0} salonów", dc_cnt[11])); //SendMessage(MessageType.Info, string.Format("Wczytano {0} paczkomatów", dc_cnt[3])); //SendMessage(MessageType.Info, string.Format("Wczytano {0} placówek pocztowych", dc_cnt[15])); //SendMessage(MessageType.Info, string.Format("Wczytano {0} stacji orlen", dc_cnt[16])); //SendMessage(MessageType.Info, string.Format("Wczytano {0} punktów odbioru Livro", dc_cnt[17])); //SendMessage(MessageType.Info, string.Format("Wczytano {0} Żabek", dc_cnt[18])); ////SendMessage(MessageType.Info, string.Format("Wczytano {0} punktów odbioru Mole Mole", dc_cnt[9])); //SendMessage(MessageType.Info, string.Format("Pominięto {0} punktów", dc_cnt[0])); } else SendMessage(MessageType.Info, "Brak punktów odbioru :("); } } return true; } protected override void ConfigValueChanged(string key) { Properties.Settings.Default.Reload(); base.ConfigValueChanged(key); } } }