private bool SaveProductAttributes(int vendorID, artikelEigenschap artikelEigenschapData)
        {
            var alliantieName     = VendorSettingsHelper.GetAlliantieName(vendorID);
            var retailPartnerCode = VendorSettingsHelper.GetRetailPartnerCode(vendorID);
            var sequenceNumberArtikelEigenschap = CommunicatorHelper.GetSequenceNumber(vendorID);

            artikelEigenschapData.header.berichtDatumTijd  = DateTime.Now;
            artikelEigenschapData.header.berichtNaam       = "artikelEigenschap";
            artikelEigenschapData.header.retailPartnerCode = retailPartnerCode;
            artikelEigenschapData.header.bestandsNaam      = string.Format("{0}{1}artikelEigenschap.xml", sequenceNumberArtikelEigenschap, alliantieName);

            var messageIDArtAttr = MessageHelper.InsertMessage(MessageHelper.WehkampMessageType.ProductAttribute, artikelEigenschapData.header.bestandsNaam, vendorID);

            try
            {
                artikelEigenschapData.SaveToFile(string.Format(Path.Combine(ConfigurationHelper.ProductAttributesRootFolder, vendorID.ToString(CultureInfo.InvariantCulture), artikelEigenschapData.header.bestandsNaam)));
                MessageHelper.UpdateMessageStatus(messageIDArtAttr, WehkampMessageStatus.Success);
            }
            catch (Exception ex)
            {
                log.Fatal("Error while saving artikelEigenschap file", ex);
                MessageHelper.UpdateMessageStatus(messageIDArtAttr, WehkampMessageStatus.Error);

                return(false);
            }

            return(true);
        }
Esempio n. 2
0
        private void SaveStockReturn(int vendorID, retourAanvraag stockReturnRequest)
        {
            var alliantieName     = VendorSettingsHelper.GetAlliantieName(vendorID);
            var retailPartnerCode = VendorSettingsHelper.GetRetailPartnerCode(vendorID);
            var sequenceNumber    = CommunicatorHelper.GetSequenceNumber(vendorID);

            stockReturnRequest.header.berichtDatumTijd  = DateTime.Now;
            stockReturnRequest.header.berichtNaam       = "retourAanvraag";
            stockReturnRequest.header.retailPartnerCode = retailPartnerCode;
            stockReturnRequest.header.bestandsNaam      = string.Format("{0}{1}retourAanvraag.xml", sequenceNumber, alliantieName);

            var messageID = MessageHelper.InsertMessage(MessageHelper.WehkampMessageType.StockReturnRequest, stockReturnRequest.header.bestandsNaam, vendorID);

            try
            {
                stockReturnRequest.SaveToFile(string.Format(Path.Combine(ConfigurationHelper.StockReturnRequestRootFolder, vendorID.ToString(CultureInfo.InvariantCulture), stockReturnRequest.header.bestandsNaam)));
                MessageHelper.UpdateMessageStatus(messageID, WehkampMessageStatus.Success);
            }
            catch (Exception ex)
            {
                log.Fatal("Error while saving retourAanvraag file", ex);
                MessageHelper.UpdateMessageStatus(messageID, WehkampMessageStatus.Error);
            }
        }
Esempio n. 3
0
        private void SavePriceChanges(int vendorID, prijsAanpassing priceChange)
        {
            var alliantieName     = VendorSettingsHelper.GetAlliantieName(vendorID);
            var retailPartnerCode = VendorSettingsHelper.GetRetailPartnerCode(vendorID);
            var sequenceNumber    = CommunicatorHelper.GetSequenceNumber(vendorID);

            priceChange.header.berichtDatumTijd  = DateTime.Now;
            priceChange.header.berichtNaam       = "prijsAanpassing";
            priceChange.header.retailPartnerCode = retailPartnerCode;
            priceChange.header.bestandsNaam      = string.Format("{0}{1}prijsAanpassing.xml", sequenceNumber, alliantieName);

            var messageIDPriceChange = MessageHelper.InsertMessage(MessageHelper.WehkampMessageType.ProductPriceUpdate, priceChange.header.bestandsNaam, vendorID);

            try
            {
                priceChange.SaveToFile(string.Format(Path.Combine(ConfigurationHelper.ProductPricesRootFolder, vendorID.ToString(CultureInfo.InvariantCulture), priceChange.header.bestandsNaam)));
                MessageHelper.UpdateMessageStatus(messageIDPriceChange, WehkampMessageStatus.Success);
            }
            catch (Exception ex)
            {
                log.Fatal("Error while saving Price Change file", ex);
                MessageHelper.UpdateMessageStatus(messageIDPriceChange, WehkampMessageStatus.Error);
            }
        }
Esempio n. 4
0
        private void SaveProductInformation(int vendorID, artikelInformatie artInfo, PetaPoco.Database db = null)
        {
            var alliantieName     = VendorSettingsHelper.GetAlliantieName(vendorID);
            var retailPartnerCode = VendorSettingsHelper.GetRetailPartnerCode(vendorID);
            var sequenceNumberArtikelInformatie = CommunicatorHelper.GetSequenceNumber(vendorID);

            artInfo.header.berichtDatumTijd  = DateTime.Now;
            artInfo.header.berichtNaam       = "artikelInformatie";
            artInfo.header.retailPartnerCode = retailPartnerCode;
            artInfo.header.bestandsNaam      = string.Format("{0}{1}artikelInformatie.xml", sequenceNumberArtikelInformatie, alliantieName);

            var messageIDArtInfo = MessageHelper.InsertMessage(MessageHelper.WehkampMessageType.ProductInformation, artInfo.header.bestandsNaam, vendorID, db);

            try
            {
                artInfo.SaveToFile(string.Format(Path.Combine(ConfigurationHelper.ProductInformationRootFolder, vendorID.ToString(CultureInfo.InvariantCulture), artInfo.header.bestandsNaam)));
                MessageHelper.UpdateMessageStatus(messageIDArtInfo, WehkampMessageStatus.Success, db);
            }
            catch (Exception ex)
            {
                log.Fatal("Error while saving artikelInfo file", ex);
                MessageHelper.UpdateMessageStatus(messageIDArtInfo, WehkampMessageStatus.Error);
            }
        }
Esempio n. 5
0
        private void SaveShipmentInformation(int vendorID, aankomst shipment, PetaPoco.Database db = null)
        {
            var alliantieName          = VendorSettingsHelper.GetAlliantieName(vendorID);
            var retailPartnerCode      = VendorSettingsHelper.GetRetailPartnerCode(vendorID);
            var sequenceNumberShipment = CommunicatorHelper.GetSequenceNumber(vendorID);

            shipment.header.berichtDatumTijd  = DateTime.Now;
            shipment.header.berichtNaam       = "aankomst";
            shipment.header.retailPartnerCode = retailPartnerCode;
            shipment.header.bestandsNaam      = string.Format("{0}{1}aankomst.xml", sequenceNumberShipment, alliantieName);

            var messageIDShipment = MessageHelper.InsertMessage(MessageHelper.WehkampMessageType.ShipmentNotification, shipment.header.bestandsNaam, vendorID, db);

            try
            {
                shipment.SaveToFile(Path.Combine(ConfigurationHelper.ShipmentNotificationRootFolder, vendorID.ToString(CultureInfo.InvariantCulture), shipment.header.bestandsNaam));
                MessageHelper.UpdateMessageStatus(messageIDShipment, WehkampMessageStatus.Success, db);
            }
            catch (Exception ex)
            {
                log.Fatal("Error while saving aankomst file", ex);
                MessageHelper.UpdateMessageStatus(messageIDShipment, WehkampMessageStatus.Error);
            }
        }
Esempio n. 6
0
        private void DownloadMessageFiles(int vendorID)
        {
            var remoteFileList = new ArrayList();

            _downloadedFiles = new Dictionary <string, decimal>();

            var ftpClient = SftpHelper.CreateClient(VendorSettingsHelper.GetSFTPSetting(vendorID), CommunicatorHelper.GetWehkampPrivateKeyFilename(vendorID), "D1r@ct379");

            if (ftpClient == null)
            {
                log.AuditCritical("SFTP failed to connect");
                return;
            }

            remoteFileList.Clear();
            var allianceDirectoryName = string.Format("TO_{0}", VendorSettingsHelper.GetAlliantieName(vendorID).ToUpperInvariant());

            try
            {
                ftpClient.ListDirectory(allianceDirectoryName, remoteFileList);

                foreach (TElSftpFileInfo fileinfo in remoteFileList)
                {
                    //log.Info(string.Format("Checking remote item '{0}'", fileinfo.Name));

                    if (fileinfo.Attributes.FileType != TSBSftpFileType.ftFile && (fileinfo.Attributes.FileType != TSBSftpFileType.ftUnknown && !fileinfo.Name.Contains(".xml")))
                    {
                        //log.Info(string.Format("Not a file. Skip item '{0}'", fileinfo.Name));
                        continue;
                    }
                    var message = MessageHelper.GetMessageByFilename(fileinfo.Name);

                    // if this is a second attempt, only try again if the validation has failed or there was an error downloading
                    if (message != null && message.Status != WehkampMessageStatus.ErrorDownload &&
                        message.Status != WehkampMessageStatus.ValidationFailed)
                    {
                        //log.Info(string.Format("Skip downloading file '{0}'", fileinfo.Name));
                        continue;
                    }
                    try
                    {
                        //log.Info(string.Format("Start downloading file '{0}'", fileinfo.Name));
                        ftpClient.DownloadFile(Path.Combine(allianceDirectoryName, fileinfo.Name).ToUnixPath(), Path.Combine(ConfigurationHelper.IncomingFilesRootFolder, vendorID.ToString(CultureInfo.InvariantCulture), fileinfo.Name));

                        ftpClient.RemoveFile(Path.Combine(allianceDirectoryName, fileinfo.Name).ToUnixPath());
                    }
                    catch (Exception e)
                    {
                        log.AuditError(string.Format("Cannot access {0} over SFTP: {1}\n{2}", allianceDirectoryName, e.Message, e.StackTrace));

                        if (message != null)
                        {
                            MessageHelper.UpdateMessageStatus(message.MessageID, WehkampMessageStatus.ErrorDownload);
                        }
                    }
                    finally
                    {
                        if (message != null)
                        {
                            MessageHelper.UpdateMessageAttempt(message.MessageID);

                            if (message.Attempts + 1 >= 10)
                            {
                                MessageHelper.UpdateMessageStatus(message.MessageID, WehkampMessageStatus.MaxRetryExceeded);
                            }
                        }
                    }

                    if (message == null || message.Attempts + 1 < 10)
                    {
                        _downloadedFiles.Add(fileinfo.Name, message != null ? message.MessageID : -1);
                    }
                }
            }
            catch (Exception e)
            {
                log.AuditError(string.Format("Cannot access {0} over SFTP: {1}\n{2}", allianceDirectoryName, e.Message, e.StackTrace));
            }

            CreateMessagesFromDownloadedFiles(vendorID);

            ftpClient.Dispose();
        }