Esempio n. 1
0
        private void DrawTitleB(StiContainer content, DateTime startDate, DateTime endDate, double dynamicWidth)
        {
            double left = 0, top = 0, basicHeight = .2;
            var    border     = new StiBorder(StiBorderSides.All, Color.Black, 1, StiPenStyle.Solid);
            var    artistText = new StiText(new RectangleD(left, top, 1.2, basicHeight))
            {
                Text          = "作家",
                Font          = new Font("Meiryo", 6),
                Border        = border,
                HorAlignment  = StiTextHorAlignment.Center,
                VertAlignment = StiVertAlignment.Center
            };

            content.Components.Add(artistText);
            left += 1.2;

            for (var date = startDate; date.Date <= endDate.Date; date = date.AddDays(1))
            {
                var dateText = new StiText(new RectangleD(left, top, dynamicWidth * 3, basicHeight))
                {
                    Text          = date.ToString(Constants.ExactMonthDayFormatJP),
                    Font          = new Font("Meiryo", 6),
                    Border        = border,
                    HorAlignment  = StiTextHorAlignment.Center,
                    VertAlignment = StiVertAlignment.Center
                };
                content.Components.Add(dateText);
                left += dateText.Width;
            }

            var totalOfContractArtist = new StiText(new RectangleD(left, top, .6, basicHeight))
            {
                Text          = "本数",
                Font          = new Font("Meiryo", 6),
                Border        = border,
                HorAlignment  = StiTextHorAlignment.Center,
                VertAlignment = StiVertAlignment.Center
            };

            content.Components.Add(totalOfContractArtist);
            left += .6;

            var subTotalArtist = new StiText(new RectangleD(left, top, 1.1, basicHeight))
            {
                Text          = "小計",
                Font          = new Font("Meiryo", 6),
                Border        = border,
                HorAlignment  = StiTextHorAlignment.Center,
                VertAlignment = StiVertAlignment.Center
            };

            content.Components.Add(subTotalArtist);
        }
 public static StiBorder Border(JProperty prop)
 {
     if (prop.Value is JValue)
     {
         return(Border((string)((JValue)prop.Value).Value));
     }
     else
     {
         var border = new StiBorder();
         border.LoadFromJson((JObject)prop.Value);
         return(border);
     }
 }
Esempio n. 3
0
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture,
                                         object value, Type destinationType)
        {
            if (destinationType == typeof(string) && value is StiBorder)
            {
                if (value == null)
                {
                    return("null");
                }
                else
                {
                    StiEnumConverter enc = new StiEnumConverter(typeof(StiBorderSides));

                    return(enc.ConvertTo(context, culture, ((StiBorder)value).Side, typeof(string)) as string);
                }
            }

            if (destinationType == typeof(InstanceDescriptor) && value != null)
            {
                #region StiAdvancedBorder
                if (value is StiAdvancedBorder)
                {
                    StiAdvancedBorder border = (StiAdvancedBorder)value;


                    Type[] types = new Type[] {
                        typeof(Color),
                        typeof(double),
                        typeof(StiPenStyle),

                        typeof(Color),
                        typeof(double),
                        typeof(StiPenStyle),

                        typeof(Color),
                        typeof(double),
                        typeof(StiPenStyle),

                        typeof(Color),
                        typeof(double),
                        typeof(StiPenStyle),

                        typeof(bool),
                        typeof(double),
                        typeof(StiBrush),
                        typeof(bool)
                    };

                    ConstructorInfo info = typeof(StiAdvancedBorder).GetConstructor(types);
                    if (info != null)
                    {
                        object[] objs = new object[]    {
                            border.TopSide.Color,
                            border.TopSide.Size,
                            border.TopSide.Style,

                            border.BottomSide.Color,
                            border.BottomSide.Size,
                            border.BottomSide.Style,

                            border.LeftSide.Color,
                            border.LeftSide.Size,
                            border.LeftSide.Style,

                            border.RightSide.Color,
                            border.RightSide.Size,
                            border.RightSide.Style,

                            border.DropShadow,
                            border.ShadowSize,
                            border.ShadowBrush,
                            border.Topmost
                        };

                        return(CreateNewInstanceDescriptor(info, objs));
                    }
                }
                #endregion

                #region StiBorder
                else
                {
                    StiBorder border = (StiBorder)value;


                    Type[] types = new Type[] {
                        typeof(StiBorderSides),
                        typeof(Color),
                        typeof(double),
                        typeof(StiPenStyle),
                        typeof(bool),
                        typeof(double),
                        typeof(StiBrush),
                        typeof(bool)
                    };

                    ConstructorInfo info = typeof(StiBorder).GetConstructor(types);
                    if (info != null)
                    {
                        object[] objs = new object[]    {
                            border.Side,
                            border.Color,
                            border.Size,
                            border.Style,
                            border.DropShadow,
                            border.ShadowSize,
                            border.ShadowBrush,
                            border.Topmost
                        };

                        return(CreateNewInstanceDescriptor(info, objs));
                    }
                }
                #endregion
            }
            return(base.ConvertTo(context, culture, value, destinationType));
        }
Esempio n. 4
0
        private void ReadBorder(XmlNode node, StiComponent comp)
        {
            try
            {
                if (comp is IStiBorder)
                {
                    StiBorder border = ((IStiBorder)comp).Border;

                    #region Border.Color
                    border.Color = ReadColor(node, "Border.Color");
                    #endregion

                    #region Border.Lines
                    XmlAttribute attr = node.Attributes["Border.Lines"];
                    if (attr != null)
                    {
                        if (attr.Value == "All")
                        {
                            border.Side = StiBorderSides.All;
                        }
                        else
                        {
                            if (attr.Value.Contains("Left"))
                            {
                                border.Side |= StiBorderSides.Left;
                            }
                            if (attr.Value.Contains("Right"))
                            {
                                border.Side |= StiBorderSides.Right;
                            }
                            if (attr.Value.Contains("Top"))
                            {
                                border.Side |= StiBorderSides.Top;
                            }
                            if (attr.Value.Contains("Bottom"))
                            {
                                border.Side |= StiBorderSides.Bottom;
                            }
                        }
                    }
                    #endregion

                    #region Border.Width
                    border.Size = ReadDouble(node, "Border.Width", comp, 1d);
                    #endregion

                    #region Border.Style
                    attr = node.Attributes["Border.Style"];
                    if (attr != null)
                    {
                        switch (attr.Value)
                        {
                        case "Dash":
                            border.Style = StiPenStyle.Dash;
                            break;

                        case "DashDot":
                            border.Style = StiPenStyle.DashDot;
                            break;

                        case "DashDotDot":
                            border.Style = StiPenStyle.DashDotDot;
                            break;

                        case "Dot":
                            border.Style = StiPenStyle.Dot;
                            break;

                        case "Double":
                            border.Style = StiPenStyle.Double;
                            break;

                        case "Solid":
                            border.Style = StiPenStyle.Solid;
                            break;
                        }
                    }
                    #endregion

                    #region Border.Shadow
                    border.DropShadow = ReadBool(node, "Border.Shadow", comp, false);
                    #endregion

                    #region Border.ShadowWidth
                    border.ShadowSize = ReadDouble(node, "Border.ShadowWidth", comp, 4d);
                    #endregion

                    #region Border.ShadowColor
                    attr = node.Attributes["Border.ShadowColor"];
                    if (attr != null)
                    {
                        border.ShadowBrush = new StiSolidBrush(ReadColor(node, "Border.ShadowColor"));
                    }
                    #endregion
                }
            }
            catch
            {
            }
        }
            private static StiBorder Border(string text)
            {
                var values = text.Split(';');

                if (values.Length == 7)
                {
                    bool   dropShadow  = false;
                    double shadowSize  = 4d;
                    var    shadowBrush = new StiSolidBrush(System.Drawing.Color.Black);

                    return(new StiAdvancedBorder(JBorderSide(values[0]), JBorderSide(values[1]),
                                                 JBorderSide(values[2]), JBorderSide(values[3]), dropShadow, shadowSize, shadowBrush));
                }
                else
                {
                    var border = new StiBorder();

                    // Side
                    if (!string.IsNullOrEmpty(values[0]))
                    {
                        border.Side = (StiBorderSides)Enum.Parse(typeof(StiBorderSides), values[0]);
                    }

                    // Color
                    if (!string.IsNullOrEmpty(values[1]))
                    {
                        border.Color = Color(values[1]);
                    }

                    // Size
                    if (!string.IsNullOrEmpty(values[2]))
                    {
                        border.Size = double.Parse(values[2]);
                    }

                    // Style
                    if (!string.IsNullOrEmpty(values[3]))
                    {
                        border.Style = (StiPenStyle)Enum.Parse(typeof(StiPenStyle), values[3]);
                    }

                    // ShadowSize
                    if (!string.IsNullOrEmpty(values[4]))
                    {
                        border.ShadowSize = double.Parse(values[4]);
                    }

                    // DropShadow
                    if (!string.IsNullOrEmpty(values[5]))
                    {
                        border.DropShadow = true;
                    }

                    // Topmost
                    if (!string.IsNullOrEmpty(values[6]))
                    {
                        border.Topmost = true;
                    }

                    // ShadowBrush
                    if (!string.IsNullOrEmpty(values[7]))
                    {
                        border.ShadowBrush = Brush(values[7]);
                    }

                    return(border);
                }
            }
            public static string JBorder(StiBorder border)
            {
                var builder = new StringBuilder();

                var advancedBorder = border as StiAdvancedBorder;

                if (advancedBorder != null)
                {
                    // TopSide
                    builder.Append(JBorderSide(advancedBorder.TopSide));
                    builder.Append(";");

                    // BottomSide
                    builder.Append(JBorderSide(advancedBorder.BottomSide));
                    builder.Append(";");

                    // LeftSide
                    builder.Append(JBorderSide(advancedBorder.LeftSide));
                    builder.Append(";");

                    // RightSide
                    builder.Append(JBorderSide(advancedBorder.RightSide));
                    builder.Append(";");

                    // DropShadow
                    if (border.DropShadow)
                    {
                        builder.Append(border.DropShadow);
                    }
                    builder.Append(";");

                    // ShadowSize
                    if (border.ShadowSize != 4d)
                    {
                        builder.Append(border.ShadowSize);
                    }
                    builder.Append(";");

                    // ShadowBrush
                    builder.Append(JBrush(border.ShadowBrush, new StiSolidBrush(Color.Black)));
                }
                else
                {
                    // Side
                    if (border.Side != StiBorderSides.None)
                    {
                        builder.Append(border.Side);
                    }
                    builder.Append(";");

                    // Color
                    if (border.Color != Color.Black)
                    {
                        builder.Append(JColor(border.Color));
                    }
                    builder.Append(";");

                    // Size
                    if (border.Size != 1d)
                    {
                        builder.Append(border.Size);
                    }
                    builder.Append(";");

                    // Style
                    if (border.Style != StiPenStyle.Solid)
                    {
                        builder.Append(border.Style);
                    }
                    builder.Append(";");

                    // ShadowSize
                    if (border.ShadowSize != 4d)
                    {
                        builder.Append(border.ShadowSize);
                    }
                    builder.Append(";");

                    // DropShadow
                    if (border.DropShadow)
                    {
                        builder.Append(border.DropShadow);
                    }
                    builder.Append(";");

                    // Topmost
                    if (border.Topmost)
                    {
                        builder.Append(border.Topmost);
                    }
                    builder.Append(";");

                    // ShadowBrush
                    builder.Append(JBrush(border.ShadowBrush, new StiSolidBrush(Color.Black)));
                }

                return(builder.ToString());
            }
Esempio n. 7
0
        public IActionResult PurchaseStatisticsBPrint(SearchFormModel model)
        {
            model.Type = (int)Constants.PurchaseType.B;
            var result         = _unitOfWork.PurchaseStatisticsRepository.GetListOfContractByPurchaseStatisticsCd(model);
            var reportLocation = "./wwwroot/report/PurchaseStatisticsBReport.mrt";
            var report         = new StiReport();

            StiFontCollection.AddFontFile("./wwwroot/assets/fonts/meiryo/Meiryo W53 Regular.ttf", "Meiryo");
            StiFontCollection.AddFontFile("./wwwroot/assets/fonts/meiryo/MeiryoUI-Bold.ttf", "Meiryo UI");
            report.Load(reportLocation);
            report.ReportName      = string.Concat("購入者リスト集計表 B_", DateTime.Now.ToString(Constants.ExactDateTimeFormat));
            report["EventName"]    = $"【{result.EventName}】";
            report["EventAddress"] = result.EventAddress + (string.IsNullOrEmpty(result.EventPlace) ? string.Empty : $"({result.EventPlace})");
            report["PeriodTime"]   = result.PeriodTime;
            report["EventManager"] = result.EventManagerString;
            report["InputPerson"]  = result.InputPersonString;

            var    content = report.Pages["content"];
            var    border = new StiBorder(StiBorderSides.All, Color.Black, 1, StiPenStyle.Solid);
            double top = .2, left = 0, basicWidth = .4, basicHeight = .2;
            var    countDays    = (result.EndDate - result.StartDate).TotalDays + 1;
            var    dynamicWidth = Math.Round(basicWidth + (7 - countDays) * 1.4 / countDays / 3, 2);

            DrawTitleB(content, result.StartDate, result.EndDate, dynamicWidth);

            foreach (var artist in result.ArtistsTotal)
            {
                artist.MaxCell = artist.MaxCell < 6 ? 6 : artist.MaxCell;
                while (artist.MaxCell % 3 != 0)
                {
                    artist.MaxCell++;
                }

                var artistName = new StiText(new RectangleD(left, top, 1.2, Math.Round((double)artist.MaxCell / 3) * .2 + basicHeight))
                {
                    Text          = artist.ArtistName,
                    Font          = new Font("Meiryo", 6),
                    WordWrap      = true,
                    Border        = border,
                    HorAlignment  = StiTextHorAlignment.Center,
                    VertAlignment = StiVertAlignment.Center
                };
                content.Components.Add(artistName);
                left += artistName.Width;

                for (var date = result.StartDate; date.Date <= result.EndDate.Date; date = date.AddDays(1))
                {
                    var cell = result.RowDetails.FirstOrDefault(x => x.ArtistCd == artist.ArtistCd && x.HoldDate.Date.CompareTo(date.Date) == 0);

                    var emptyText = new StiText(new RectangleD(left, top + artistName.Height - basicHeight, dynamicWidth, basicHeight))
                    {
                        Text   = string.Empty,
                        Border = border,
                    };
                    content.Components.Add(emptyText);

                    var numberOfContracts = new StiText(new RectangleD(left + dynamicWidth, top + artistName.Height - basicHeight, dynamicWidth, basicHeight))
                    {
                        Text          = (cell?.NumberOfContracts ?? 0).ToString(),
                        Font          = new Font("Meiryo", 5),
                        WordWrap      = true,
                        Border        = border,
                        HorAlignment  = StiTextHorAlignment.Right,
                        VertAlignment = StiVertAlignment.Center,
                        Margins       = new StiMargins(0, 2, 0, 0)
                    };
                    content.Components.Add(numberOfContracts);

                    var totalPriceOfContracts = new StiText(new RectangleD(left + dynamicWidth * 2, top + artistName.Height - basicHeight, dynamicWidth, basicHeight))
                    {
                        Text                       = (cell?.TotalPriceOfContracts ?? 0).ToString(Constants.CurrencyFormat),
                        Font                       = new Font("Meiryo", 5),
                        Border                     = border,
                        HorAlignment               = StiTextHorAlignment.Right,
                        VertAlignment              = StiVertAlignment.Center,
                        Margins                    = new StiMargins(0, 2, 0, 0),
                        ShrinkFontToFit            = true,
                        ShrinkFontToFitMinimumSize = 4
                    };
                    content.Components.Add(totalPriceOfContracts);

                    double topPrice = top, leftPrice = left;
                    for (var i = 0; i < artist.MaxCell; i++)
                    {
                        var rec   = new RectangleD(leftPrice, topPrice, dynamicWidth, basicHeight);
                        var price = new StiText(rec)
                        {
                            Text          = (cell == null || i >= cell.ContractPrices.Count) ? string.Empty : cell.ContractPrices[i].ToString(Constants.CurrencyFormat),
                            Font          = new Font("Meiryo", 5),
                            WordWrap      = true,
                            Border        = border,
                            HorAlignment  = StiTextHorAlignment.Right,
                            VertAlignment = StiVertAlignment.Center,
                            Margins       = new StiMargins(0, 2, 0, 0)
                        };
                        if ((i + 1) % 3 == 0)
                        {
                            leftPrice -= dynamicWidth * 2;
                            topPrice  += .2;
                        }
                        else
                        {
                            leftPrice += dynamicWidth;
                        }

                        content.Components.Add(price);
                    }

                    left += dynamicWidth * 3;
                }

                var totalContracts = new StiText(new RectangleD(left, top, .6, artistName.Height))
                {
                    Text          = artist.TotalContracts.ToString(),
                    Font          = new Font("Meiryo", 5),
                    WordWrap      = true,
                    Border        = border,
                    HorAlignment  = StiTextHorAlignment.Center,
                    VertAlignment = StiVertAlignment.Center
                };
                content.Components.Add(totalContracts);
                left += .6;

                var subTotal = new StiText(new RectangleD(left, top, 1.1, artistName.Height))
                {
                    Text                       = artist.SubTotal.ToString(Constants.CurrencyFormat),
                    Font                       = new Font("Meiryo", 5),
                    Border                     = border,
                    HorAlignment               = StiTextHorAlignment.Right,
                    VertAlignment              = StiVertAlignment.Center,
                    Margins                    = new StiMargins(0, 2, 0, 0),
                    ShrinkFontToFit            = true,
                    ShrinkFontToFitMinimumSize = 4
                };
                content.Components.Add(subTotal);

                left = 0;
                top += artistName.Height;
            }

            var totalText = new StiText(new RectangleD(left, top, 1.2, basicHeight))
            {
                Text          = "合計",
                Font          = new Font("Meiryo", 6),
                Border        = border,
                HorAlignment  = StiTextHorAlignment.Center,
                VertAlignment = StiVertAlignment.Center
            };

            content.Components.Add(totalText);
            left += 1.2;

            for (var date = result.StartDate; date.Date <= result.EndDate.Date; date = date.AddDays(1))
            {
                var cell      = result.DateTotal.FirstOrDefault(x => date.Date.CompareTo(x.Date.Value.Date) == 0);
                var emptyText = new StiText(new RectangleD(left, top, dynamicWidth, basicHeight))
                {
                    Text   = string.Empty,
                    Border = border,
                };
                content.Components.Add(emptyText);
                left += dynamicWidth;

                var numberOfContracts = new StiText(new RectangleD(left, top, dynamicWidth, basicHeight))
                {
                    Text          = (cell?.TotalContracts ?? 0).ToString(),
                    Font          = new Font("Meiryo", 5),
                    Border        = border,
                    HorAlignment  = StiTextHorAlignment.Right,
                    VertAlignment = StiVertAlignment.Center,
                    Margins       = new StiMargins(0, 2, 0, 0)
                };
                content.Components.Add(numberOfContracts);
                left += dynamicWidth;

                var totalPriceOfContracts = new StiText(new RectangleD(left, top, dynamicWidth, basicHeight))
                {
                    Text                       = (cell?.SubTotal ?? 0).ToString(Constants.CurrencyFormat),
                    Font                       = new Font("Meiryo", 5),
                    Border                     = border,
                    HorAlignment               = StiTextHorAlignment.Right,
                    VertAlignment              = StiVertAlignment.Center,
                    Margins                    = new StiMargins(0, 2, 0, 0),
                    ShrinkFontToFit            = true,
                    ShrinkFontToFitMinimumSize = 4
                };
                content.Components.Add(totalPriceOfContracts);
                left += dynamicWidth;
            }

            var sumNumberOfContracts = new StiText(new RectangleD(left, top, .6, basicHeight))
            {
                Text          = result.ArtistsTotal.Sum(x => x.TotalContracts).ToString(),
                Font          = new Font("Meiryo", 5),
                Border        = border,
                HorAlignment  = StiTextHorAlignment.Center,
                VertAlignment = StiVertAlignment.Center
            };

            content.Components.Add(sumNumberOfContracts);
            left += sumNumberOfContracts.Width;

            var total = new StiText(new RectangleD(left, top, 1.1, basicHeight))
            {
                Text                       = result.ArtistsTotal.Sum(x => x.SubTotal).ToString(Constants.CurrencyFormat),
                Font                       = new Font("Meiryo", 5),
                Border                     = border,
                HorAlignment               = StiTextHorAlignment.Right,
                VertAlignment              = StiVertAlignment.Center,
                Margins                    = new StiMargins(0, 2, 0, 0),
                ShrinkFontToFit            = true,
                ShrinkFontToFitMinimumSize = 4
            };

            content.Components.Add(total);

            return(StiNetCoreReportResponse.PrintAsPdf(report));
        }