Beispiel #1
0
        public static void GetAmazonReport(string accountName, string merchantId, string marketplaceId, string accessKeyId, string secretAccessKey, string reportGenerateId)
        {
            string senderEmail         = ConfigurationManager.AppSettings["senderEmail"];
            string messageFromPassword = ConfigurationManager.AppSettings["messageFromPassword"];
            string messageToEmail      = ConfigurationManager.AppSettings["messageToEmail"];
            string smtpClient          = ConfigurationManager.AppSettings["smtpClient"];
            int    smtpPortNum         = ConvertUtility.ToInt(ConfigurationManager.AppSettings["smtpPortNum"]);

            GetReportRequest request = new GetReportRequest();

            request.Merchant = merchantId;
            request.ReportId = reportGenerateId;
            //request.Report = File.Open(ConfigurationManager.AppSettings["filePath"], FileMode.OpenOrCreate, FileAccess.ReadWrite);
            request.Report = new FileStream(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + accountName + "_AmazonInventoryReport.xml", FileMode.Truncate, FileAccess.ReadWrite);

            const string applicationName       = "<Your Application Name>";
            const string applicationVersion    = "<Your Application Version>";
            MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();

            config.ServiceURL = "https://mws.amazonservices.com";
            config.SetUserAgentHeader(
                applicationName,
                applicationVersion,
                "C#",
                "<Parameter 1>", "<Parameter 2>");
            MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient(accessKeyId, secretAccessKey, config);
            try
            {
                GetReportResponse response = service.GetReport(request);


                Console.WriteLine("Service Response");
                Console.WriteLine("=============================================================================");
                Console.WriteLine();

                Console.WriteLine("        GetReportResponse");
                if (response.IsSetGetReportResult())
                {
                    Console.WriteLine("            GetReportResult");
                    GetReportResult getReportResult = response.GetReportResult;
                    if (getReportResult.IsSetContentMD5())
                    {
                        Console.WriteLine("                ContentMD5");
                        Console.WriteLine("                    {0}", getReportResult.ContentMD5);
                    }
                }
                if (response.IsSetResponseMetadata())
                {
                    Console.WriteLine("            ResponseMetadata");
                    ResponseMetadata responseMetadata = response.ResponseMetadata;
                    if (responseMetadata.IsSetRequestId())
                    {
                        Console.WriteLine("                RequestId");
                        Console.WriteLine("                    {0}", responseMetadata.RequestId);
                    }
                }

                Console.WriteLine("            ResponseHeaderMetadata");
                Console.WriteLine("                RequestId");
                Console.WriteLine("                    " + response.ResponseHeaderMetadata.RequestId);
                Console.WriteLine("                ResponseContext");
                Console.WriteLine("                    " + response.ResponseHeaderMetadata.ResponseContext);
                Console.WriteLine("                Timestamp");
                Console.WriteLine("                    " + response.ResponseHeaderMetadata.Timestamp);
            }
            catch (MarketplaceWebServiceException ex)
            {
                ExceptionUtility exceptionUtility = new ExceptionUtility();
                exceptionUtility.CatchMethod(ex, "GetAmazonReport ", accountName + " " + ex.Message.ToString(), senderEmail, messageFromPassword, messageToEmail, smtpClient, smtpPortNum);
            }
            request.Report.Close();
            request.Report.Dispose();
        }
Beispiel #2
0
        public string GetReport(string User, string Pass, string MsgID)
        {
            string        result  = "";
            List <Report> Reports = new List <Report>();

            // 判断参数合法性
            if (User == "")
            {
                result = _ERR_USERISEMPTY;
            }
            else
            {
                if (Pass == "")
                {
                    result = _ERR_PASSISEMPTY;
                }
                else
                {
                    if (MsgID == "") // 根据账号查询
                    {
                        try
                        {
                            // 密码加密
                            //SMS.Model.RPCResult<string> enpass = InterfaceProxy.GetSendService().Encrypt(Pass);

                            SMS.Model.RPCResult <List <SMS.Model.StatusReport> > r = InterfaceProxy.GetSendService().GetReport(User, Pass);
                            if (r.Success)
                            {
                                result = _ERR_SUCCESS;
                                List <SMS.Model.StatusReport> rts = r.Value;

                                for (int k = 0; k < rts.Count; k++)
                                {
                                    Report rt = new Report();
                                    rt.MsgID       = rts[k].SMSID.ToString();
                                    rt.Destination = rts[k].Number;
                                    rt.Stat        = rts[k].StatusCode.ToString();
                                    Reports.Add(rt);
                                }
                            }
                            else
                            {
                                result = r.Message;
                            }
                        }
                        catch (Exception ex)
                        {
                            result = _ERR_SERVICE;
                        }
                    }
                    else // 根据发送的短信标识查询
                    {
                        try
                        {
                            // 密码加密
                            //SMS.Model.RPCResult<string> enpass = InterfaceProxy.GetSendService().Encrypt(Pass);

                            SMS.Model.RPCResult <List <SMS.Model.StatusReport> > r = InterfaceProxy.GetSendService().GetReport(User, Pass, MsgID);
                            if (r.Success)
                            {
                                result = _ERR_SUCCESS;
                                List <SMS.Model.StatusReport> rts = r.Value;

                                for (int k = 0; k < rts.Count; k++)
                                {
                                    Report rt = new Report();
                                    rt.MsgID       = rts[k].SMSID.ToString();
                                    rt.Destination = rts[k].Number;
                                    rt.Stat        = rts[k].StatusCode.ToString();
                                    Reports.Add(rt);
                                }
                            }
                            else
                            {
                                result = r.Message;
                            }
                        }
                        catch (Exception ex)
                        {
                            result = _ERR_SERVICE;
                        }
                    }
                }
            }

            GetReportResult ret = new GetReportResult();

            ret.Result  = result;
            ret.Reports = Reports;
            string data = JsonSerialize.Serialize <GetReportResult>(ret);

            return(data);
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            ILogger nLogger = LogManager.GetLogger("Inventory.Console Logger");

            nLogger.Info("Starting console app");

            string outputLocation         = "c:/Temp";
            string keyFileLocation        = "c:/Temp";
            string asinFilterListLocation = "c:/Temp";

            var appSettings = ConfigurationManager.AppSettings;

            outputLocation         = appSettings["outputLocation"];
            keyFileLocation        = appSettings["keyFileLocation"];
            asinFilterListLocation = appSettings["asinFilterListLocation"];

            nLogger.Info("outputLocation: " + outputLocation);
            nLogger.Info("keyFileLocation: " + keyFileLocation);
            nLogger.Info("asinFilterListLocation: " + asinFilterListLocation);

            string         keyData        = File.ReadAllText(keyFileLocation);
            ServiceContext serviceContext = new ServiceContext();

            serviceContext = JsonConvert.DeserializeObject <ServiceContext>(keyData);


            Console.WriteLine("month (1-12)");
            string m = Console.ReadLine();

            nLogger.Info("month: " + m);
            Console.WriteLine("year ");
            string y = Console.ReadLine();

            nLogger.Info("year: " + y);

            int      month;
            int      year;
            DateTime date = DateTime.Now.Date;

            if (!Int32.TryParse(m, out month))
            {
                month = date.Month;
            }
            if (!Int32.TryParse(y, out year))
            {
                year = date.Year;
            }

            DateTime startDate = new DateTime(year, month, 1);
            DateTime endDate   = startDate.AddMonths(1);

            try
            {
                ReportHandler reportHandler = new ReportHandler(serviceContext, nLogger);
                ReportManager reportManager = new ReportManager(reportHandler, serviceContext, nLogger);
                ReportBuilder reportBuilder = new ReportBuilder();

                nLogger.Info("getting ordersReport");
                GetReportResult ordersReport = reportManager.GetReport(ReportType._GET_FLAT_FILE_ALL_ORDERS_DATA_BY_ORDER_DATE_, startDate, endDate, outputLocation);
                nLogger.Info("getting inventoryReport");
                GetReportResult inventoryReport = reportManager.GetReport(ReportType._GET_FBA_MYI_ALL_INVENTORY_DATA_, DateTime.Now.Date.AddDays(-1), DateTime.Now.Date, outputLocation);

                nLogger.Info("getting ordersTable");
                DataTable ordersTable = Util.StringToDataTable(ordersReport.Content);
                nLogger.Info("getting inventoryTable");
                DataTable inventoryTable = Util.StringToDataTable(inventoryReport.Content);
                nLogger.Info("calling JoinInventoryAndOrders");
                IEnumerable <SalesInventoryReportItem> reportItems = reportBuilder.JoinInventoryAndOrders(inventoryTable, ordersTable, startDate);
                nLogger.Info(string.Format("SalesInventoryReportItem report created, Count: {0}", reportItems.Count()));

                nLogger.Info("GetAsinFilterList");
                IList <string> asinFilterList = reportManager.GetAsinFilterList(asinFilterListLocation);
                nLogger.Info(string.Format("asinFilterList, Count: {0}", asinFilterList.Count()));

                nLogger.Info("filtering by asins");
                reportItems = reportManager.FilterReportByAsins(reportItems.ToList(), asinFilterList);

                string writePath = reportHandler.CreateFileLocation(outputLocation, serviceContext.SellerId, "InventoryAndOrders", startDate, endDate);
                nLogger.Info("SalesInventoryReportItem report path: " + writePath);

                Directory.CreateDirectory(Path.GetDirectoryName(writePath));
                using (var csv = new CsvWriter(new StreamWriter(writePath)))
                {
                    csv.WriteRecords(reportItems);
                }
                nLogger.Info("csv written");
            }

            catch (Exception e)
            {
                nLogger.Error(e);
                Console.WriteLine(e.Message);
            }

            Console.WriteLine("Report Complete.");
            Console.ReadKey();
        }