예제 #1
0
 private SvgDocument LoadSvg(Stream sourceStream)
 {
     try
     {
         return(SvgDocument.Open <SvgDocument>(sourceStream));
     }
     catch
     {
         throw new RequestInputException(Localized.Get("SvgImageCanNotBeLoaded"));
     }
 }
예제 #2
0
        protected override async Task <ResultWithMetrologyProperties <Result> > DoRunAsync(Request request)
        {
            var owner = await DbContext.Users.SingleAsync(u => u.Id == request.Owner);

            var image = new Domain.Image
            {
                Name                 = request.Name,
                Description          = request.Description,
                Source               = request.Source,
                Owner                = owner,
                VersionDescription   = Localized.Get("InitialImageVersionCreation"),
                VersionType          = ImageVersionType.Creation,
                InitialUploadUtcDate = runDate ?? DateTime.UtcNow
            };

            image.LastChangeUtcDate = image.InitialUploadUtcDate;

            image.OriginalContentType = request.ContentType;
            image.OriginalSize        = request.Blob.Length;
            image.OriginalBlob        = request.Blob;

            using var sourceStream  = new MemoryStream(request.Blob);
            using var originalImage = GetBitmap(sourceStream, request.ContentType);
            image.SmallBlob         = ResizeImage(originalImage, 100);
            image.SmallBlobSize     = image.SmallBlob.Length;
            image.MediumBlob        = ResizeImage(originalImage, 600);
            image.MediumBlobSize    = image.MediumBlob.Length;
            image.BigBlob           = ResizeImage(originalImage, bigImageWidth);
            image.BigBlobSize       = image.BigBlob.Length;
            DbContext.Images.Add(image);
            await DbContext.SaveChangesAsync();

            return(new ResultWithMetrologyProperties <Result>(new Result(),
                                                              ("ImageName", request.Name.ToString()),
                                                              ("DescriptionLength", request.Description.Length.ToString()),
                                                              ("SourceFieldLength", request.Source.Length.ToString()),
                                                              ("ContentType", request.ContentType),
                                                              ("ImageSize", image.OriginalSize.ToString())
                                                              ));
        }
예제 #3
0
        protected override async Task <ResultWithMetrologyProperties <Result> > DoRunAsync(Request request)
        {
            var tagName = await DbContext.Tags.Where(tag => tag.Id == request.TagId).Select(tag => tag.Name).SingleAsync();

            var previousVersionCreator = new PreviousVersionCreator(DbContext);

            foreach (var cardId in request.CardIds)
            {
                if (!DbContext.TagsInCards.Any(tagInCard => tagInCard.CardId == cardId && tagInCard.TagId == request.TagId))
                {
                    var card = await previousVersionCreator.RunAsync(cardId, request.VersionCreator.Id, Localized.Get("AddTag") + $" '{tagName}'");

                    card.VersionCreator = request.VersionCreator; //A priori inutile, à confirmer
                    DbContext.TagsInCards.Add(new TagInCard()
                    {
                        TagId = request.TagId, CardId = cardId
                    });
                }
            }
            await DbContext.SaveChangesAsync();

            return(new ResultWithMetrologyProperties <Result>(new Result(),
                                                              ("TagId", request.TagId.ToString()),
                                                              ("TagName", tagName),
                                                              ("CardCount", request.CardIds.Count().ToString())));
        }
예제 #4
0
        protected override async Task <ResultWithMetrologyProperties <Result> > DoRunAsync(Request request)
        {
            foreach (var cardId in request.CardIds)
            {
                var previousVersionCreator = new PreviousVersionCreator(DbContext);
                var card = await previousVersionCreator.RunAsync(cardId, request.UserId, Localized.Get("Deletion"), deletionUtcDate);

                await previousVersionCreator.RunForDeletionAsync(card, deletionUtcDate);

                await DbContext.SaveChangesAsync();

                var actualCard = await DbContext.Cards.SingleAsync(card => card.Id == cardId);

                DbContext.Cards.Remove(actualCard);
                await DbContext.SaveChangesAsync();
            }
            return(new ResultWithMetrologyProperties <Result>(new Result(), ("CardCount", request.CardIds.Count().ToString())));
        }