示例#1
0
        public ActionResult SaveNewsSection(NewsSectionModel model)
        {
            if (model.Id <= 0) //新增
            {
                var res = _component.CreateNewsSection(new NewsSetion
                {
                    CNName     = model.CNName,
                    ENName     = model.ENName,
                    Sort       = model.Sort,
                    CreateTime = DateTime.UtcNow,
                    Status     = 0,
                    AccountsId = AccountInfo.Id
                });
                return(Json(res.toJson()));
            }
            var resEdit = _component.UpdateNewsSection(new NewsSetion
            {
                Id         = model.Id,
                CNName     = model.CNName,
                ENName     = model.ENName,
                Sort       = model.Sort,
                AccountsId = AccountInfo.Id
            });

            return(Json(resEdit.toJson()));
        }
示例#2
0
        /// <summary>
        /// Get the bytearray of the image in the correct order and format
        /// </summary>
        /// <param name="article"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        private async Task <List <byte[]> > GetArticleImageData(NewsSectionModel article)
        {
            if (article.ArticleImage != null)
            {
                using MagickImage image = new MagickImage(article.ArticleImage);
                image.Format            = MagickFormat.Tga;
                image.ColorType         = ColorType.Palette;
                byte[] convertedImage = image.ToByteArray();

                const int colorMapLength = 768; //file[6] << 8 | file[5];
                byte[]    colorData      = new byte[0x300];
                Array.Copy(convertedImage, 18, colorData, 0, colorMapLength);
                byte[] imageData = new byte[convertedImage.Length - 19 - colorMapLength];
                Array.Copy(convertedImage, 18 + colorMapLength, imageData, 0, (imageData.Length));

                uint imageSize = (uint)(colorData.Length + imageData.Length);
                if (imageSize > 17152)
                {
                    _logger.Warning("Image size is bigger than 17152 the size is {0}", imageSize);
                }
                else
                {
                    _logger.Debug("Image size is equals to {0}", imageSize);
                }

                const ushort chunkCount = 1;

                using MemoryStream sizeInfoStream = new MemoryStream();
                await sizeInfoStream.WriteAsync(BitConverter.GetBytes(imageSize.Swap()));

                await sizeInfoStream.WriteAsync(BitConverter.GetBytes(chunkCount.Swap()));

                byte[] sizeInfo = sizeInfoStream.ToArray();

                using MemoryStream imageStream = new MemoryStream();

                await imageStream.WriteAsync(BitConverter.GetBytes(ushort.MinValue.Swap()));

                await imageStream.WriteAsync(BitConverter.GetBytes(imageSize.Swap()));

                await imageStream.WriteAsync(colorData);

                await imageStream.WriteAsync(imageData);

                byte[] imageDetails = imageStream.ToArray();

                return(new List <byte[]> {
                    sizeInfo, imageDetails
                });
            }

            return(null);
        }
示例#3
0
        /// <summary>
        /// Convert Article model to byte array for PS2 Client
        /// </summary>
        /// <param name="article"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        private async Task <byte[]> ConvertNewsArticle(NewsSectionModel article)
        {
            TimeSpan t = article.ArticleDate - UnixEpoch;
            ulong    secondsSinceEpoch = Convert.ToUInt64(t.TotalSeconds);


            using MemoryStream memoryStream = new MemoryStream();
            await memoryStream.WriteAsync(BitConverter.GetBytes(article.ArticleID.Swap()));

            await memoryStream.WriteAsync(_encoding.GetBytes(article.ArticleTitle.PadRight(34, '\0')));

            await memoryStream.WriteAsync(_encoding.GetBytes(article.ArticleBody.PadRight(0x25a, '\0')));

            await memoryStream.WriteAsync(BitConverter.GetBytes(secondsSinceEpoch.Swap()), 0, 8);

            //await memoryStream.WriteAsync(BitConverter.GetBytes(isNew.Swap()),0,4); // this will be set based on the save ID


            return(memoryStream.ToArray());
        }