- 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<int, string> DcTypes;
- public CBPO(string constr) : base(constr)
- {
- System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
- //DcTypes = new Dictionary<int, string>();
- //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<int, int> dc_cnt = new Dictionary<int, int>();
- //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);
- }
- }
- }