Example #1
0
        public ReportRenderResponse Post(ReportRenderMultipleMQRequest request)
        {
            string Displayname = "";

            this.Ms1 = new MemoryStream();
            this.EbConnectionFactory = new EbConnectionFactory(request.SolnId, this.Redis);

            JsonServiceClient      authClient   = this.ServiceStackClient;
            MyAuthenticateResponse authResponse = authClient.Get <MyAuthenticateResponse>(new Authenticate
            {
                provider = CredentialsAuthProvider.Name,
                UserName = GetUserObject(request.ReadingUserAuthId)?.Email,
                Password = "******",
                Meta     = new Dictionary <string, string> {
                    { RoutingConstants.WC, RoutingConstants.UC },
                    { TokenConstants.CID, request.SolnId },
                    { "sso", "true" },
                    { TokenConstants.IP, "" },
                    { RoutingConstants.USER_AGENT, "" }
                },
            });

            this.FileClient.BearerToken  = authResponse?.BearerToken;
            this.FileClient.RefreshToken = authResponse?.RefreshToken;

            List <EbObjectWrapper> resultlist = EbObjectsHelper.GetParticularVersion(this.EbConnectionFactory.ObjectsDB, request.RefId);
            EbReport ReportObject             = EbSerializers.Json_Deserialize <EbReport>(resultlist[0].Json);

            ReportObject.ObjectsDB     = this.EbConnectionFactory.ObjectsDB;
            ReportObject.Redis         = this.Redis;
            ReportObject.FileClient    = this.FileClient;
            ReportObject.Solution      = GetSolutionObject(request.SolnId);
            ReportObject.ReadingUser   = GetUserObject(request.ReadingUserAuthId);
            ReportObject.RenderingUser = GetUserObject(request.RenderingUserAuthId);

            ReportObject.CultureInfo = CultureHelper.GetSerializedCultureInfo(ReportObject.ReadingUser?.Preference.Locale ?? "en-US").GetCultureInfo();
            ReportObject.GetWatermarkImages();

            try
            {
                byte[] encodedDataAsBytes = System.Convert.FromBase64String(request.Params);
                string returnValue        = System.Text.ASCIIEncoding.ASCII.GetString(encodedDataAsBytes);

                List <Param> _paramlist = (returnValue == null) ? null : JsonConvert.DeserializeObject <List <Param> >(returnValue);
                if (_paramlist != null)
                {
                    for (int i = 0; i < _paramlist.Count; i++)
                    {
                        string[] values = _paramlist[i].Value.Split(',');

                        for (int j = 0; j < values.Length; j++)
                        {
                            List <Param> _newParamlist = new List <Param>
                            {
                                new Param {
                                    Name = "id", Value = values[j], Type = "7"
                                }
                            };

                            this.Report = ReportObject;

                            if (Report != null)
                            {
                                InitializePdfObjects();
                                Report.Doc.NewPage();
                                Report.GetData4Pdf(_newParamlist, EbConnectionFactory);

                                if (Report.DataSet != null)
                                {
                                    Report.Draw();
                                }
                                else
                                {
                                    throw new Exception();
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception-reportService " + e.Message + e.StackTrace);
                Report.HandleExceptionPdf();
            }

            Report.Doc.Close();

            if (Report.DataSourceRefId != string.Empty && Report.DataSet != null)
            {
                Report.DataSet.Tables.Clear();
                Report.DataSet = null;
            }

            Displayname = Regex.Replace(((Displayname == "") ? Report.DisplayName : Displayname), @"\s+", "");

            Ms1.Position = 0;

            string uid = request.RefId + request.UserId + request.SubscriptionId;

            byte[] compressedData = Compress(Ms1.ToArray());

            this.Redis.Set("PdfReport" + uid, compressedData, DateTime.Now.AddMinutes(15));

            this.ServerEventClient.BearerToken     = authResponse?.BearerToken;
            this.ServerEventClient.RefreshToken    = authResponse?.RefreshToken;
            this.ServerEventClient.RefreshTokenUri = Environment.GetEnvironmentVariable(EnvironmentConstants.EB_GET_ACCESS_TOKEN_URL);

            Console.WriteLine("Calling NotifySubscriptionRequest to subsc.id :" + request.SubscriptionId);
            this.ServerEventClient.Post <NotifyResponse>(new NotifySubscriptionRequest
            {
                Msg              = "/DV/GetPdf?refid=" + uid + "&filename=" + Displayname + ".pdf",
                Selector         = StaticFileConstants.PDFDOWNLOADSUCCESS,
                ToSubscriptionId = request.SubscriptionId
            });

            return(new ReportRenderResponse());
        }