예제 #1
0
파일: popup.cs 프로젝트: MatekDesign/LanUs
        private void event_ip()
        {
            strName = util.globals.local_name;
            ip = util.globals.popup_rep;
            util.globals.popup_rep = null;
            try
            {
                //Using UDP sockets
                clientSocket = new Socket(AddressFamily.InterNetwork,
                    SocketType.Dgram, ProtocolType.Udp);

                //IP address of the server machine
                IPAddress ipAddress = IPAddress.Parse(ip);
                //Server is listening on port 1000
                IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 1000);

                epServer = (EndPoint)ipEndPoint;

                Client.Data msgToSend = new Client.Data ();
                msgToSend.cmdCommand = Client.Command.Login;
                msgToSend.strMessage = null;
                msgToSend.strName = strName;

                byte[] byteData = msgToSend.ToByte();

                //Login to the server
                clientSocket.BeginSendTo(byteData, 0, byteData.Length,
                    SocketFlags.None, epServer, new AsyncCallback(OnSend), null);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "SGSclient",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #2
0
        public byte[] exportReportToStream(string reportPath, Client.Data datafile)
        {
            using (var reportClientDocument = new ReportDocument())
            {
                //reportClientDocument.ReportAppServer = "inproc:jrc";
                reportClientDocument.Load(reportPath);


                foreach (var table in datafile.DataTables)
                {
                    DataTable dt = CreateTableEtl(table.Value);

                    try
                    {
                        int  idx       = 0;
                        bool converted = int.TryParse(table.Key, out idx);
                        if (converted)
                        {
                            SetDataSource(idx, dt, reportClientDocument);
                        }
                        else
                        {
                            SetDataSource(table.Key, dt, reportClientDocument);
                        }
                    }
                    catch (Exception)
                    {
                        // some report data sources are optional
                        // TODO: logging
                    }
                }

                foreach (var table in datafile.SubReportDataTables)
                {
                    // fixme: sub report with multiple datatables?
                    DataTable dt = CreateTableEtl(table.DataTable);
                    try
                    {
                        int  idx       = 0;
                        bool converted = int.TryParse(table.TableName, out idx);
                        if (converted)
                        {
                            SetSubReport(table.ReportName, idx, dt, reportClientDocument);
                        }
                        else
                        {
                            SetSubReport(table.ReportName, table.TableName, dt, reportClientDocument);
                        }
                    }
                    catch (Exception)
                    {
                        // some sub reports are optional
                        // TODO: logging
                    }
                }



                foreach (var param in datafile.Parameters)
                {
                    SetParameterValue(param.Key, param.Value, reportClientDocument);
                }

                foreach (ParameterField x in reportClientDocument.ParameterFields)
                {
                    if (x.HasCurrentValue == false && x.ReportParameterType == ParameterType.ReportParameter)
                    {
                        // to get things up and running, add defaults for missing parameters

                        SetParameterValue(x.Name, "", reportClientDocument);
                    }
                }

                foreach (var x in datafile.MoveObjectPosition)
                {
                    try
                    {
                        MoveReportObject(x, reportClientDocument);
                    }
                    catch (System.IndexOutOfRangeException)
                    {
                        // TODO: Add logging about bad move objects
                    }
                }


                return(ExportPDF(reportClientDocument));
            }
        }
예제 #3
0
        public async Task <HttpResponseMessage> Post()
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            if (AuthFailed())
            {
                var authproblem = new HttpResponseMessage(HttpStatusCode.Unauthorized);
                return(authproblem);
            }

            var provider = new MultipartMemoryStreamProvider();
            await Request.Content.ReadAsMultipartAsync(provider);

            Client.Data reportData     = null;
            byte[]      reportTemplate = null;

            foreach (var file in provider.Contents)
            {
                string name = file.Headers.ContentDisposition.Name;
                if (string.Equals(name, "reportdata", StringComparison.CurrentCultureIgnoreCase))
                {
                    var buffer = await file.ReadAsByteArrayAsync();

                    reportData = Newtonsoft.Json.JsonConvert.DeserializeObject <Client.Data>(await file.ReadAsStringAsync());
                }
                else
                {
                    reportTemplate = await file.ReadAsByteArrayAsync();
                }
            }

            string reportPath = null;

            byte[] bytes = null;
            try
            {
                reportPath = System.IO.Path.GetTempFileName() + ".rpt";
                // System.IO.File.WriteAllBytes(reportPath, reportTemplate);
                // Using System.IO.File.WriteAllBytes randomly causes problems where the system still
                // has the file open when crystal attempts to load it and crystal fails.
                using (var fstream = new FileStream(reportPath, FileMode.Create))
                {
                    fstream.Write(reportTemplate, 0, reportTemplate.Length);
                    fstream.Flush();
                    fstream.Close();
                }

                var exporter = new PdfExporter();
                bytes = exporter.exportReportToStream(reportPath, reportData);
            }
            catch (Exception ex)
            {
                var message = new HttpResponseMessage(HttpStatusCode.InternalServerError)
                {
                    Content = new StringContent(ex.Message + System.Environment.NewLine + ex.StackTrace)
                };

                return(message);
            }
            finally
            {
                try
                {
                    System.IO.File.Delete(reportPath);
                }
                catch (Exception)
                {
                    // TODO: cleanup will happen later
                }
            }

            var result = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new ByteArrayContent(bytes)
            };

            result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
            {
                FileName = "report.pdf"
            };
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            return(result);
        }