Example #1
0
        public HomeModule(ImageRepository imgRepo)
        {
            Get("/", async args =>
            {
                var identity = this.Context.CurrentUser;
                if (identity == null)
                {
                    return(View["Login"]);
                }
                else
                {
                    var model = new Home {
                        Message = "Herzlich Willkommen"
                    };

                    model.Jobs = await imgRepo.GetProcessingJobs(Guid.Parse(identity.Identity.Name));
                    return(View["Home", model]);
                }
            });

            Get("/images/{jobId}/{imageId}", async args =>
            {
                var identity = this.Context.CurrentUser;
                if (identity == null)
                {
                    return(HttpStatusCode.Unauthorized);
                }
                Guid jobId   = Guid.Parse(args.jobId.ToString());
                Guid imageId = Guid.Parse(args.imageId);

                var job   = await imgRepo.GetImageJobById(jobId, Guid.Parse(identity.Identity.Name));
                var image = job?.Images.FirstOrDefault(x => x.Id == imageId);
                if (job == null || image == null)
                {
                    return(HttpStatusCode.NotFound);
                }

                return(new ByteArrayResponse(image.Data, MimeTypes.GetMimeType(job.Filename)));
            });

            Get("/contact", args => View["Contact"]);

            Get("/login", args => View["Login"]);
        }
        public ImageModule(IFileHandler fileUploadHandler, MessageRepository messageRepo, ImageRepository imageRepo)
        {
            Get("/imagerequest", args =>
            {
                var identity = this.Context.CurrentUser;
                if (identity == null)
                {
                    return(View["Login"]);
                }
                else
                {
                    return(View["ImageRequest"]);
                }
            });

            Post("/imagerequest", async args =>
            {
                var request = this.Bind <ImageRequest>();

                var uploadResult = await fileUploadHandler.HandleUpload(request.File.Name, request.File.Value);
                var identity     = this.Context.CurrentUser;
                var userCookie   = Request.Cookies.ContainsKey("picflow_webapp_username") ? Request.Cookies["picflow_webapp_username"] : string.Empty;

                if (request.PostImage)
                {
                    var procJob = new ImageProcessingJob
                    {
                        Id         = uploadResult.Identifier,
                        Overlay    = request.EventOverlay,
                        Resolution = 2
                    };
                    var uploadJob = new ImageUploadJob
                    {
                        User    = userCookie,
                        Message = request.Message
                    };
                    procJob.Successors.Add(uploadJob);
                    await messageRepo.SendImageProcessingJob(procJob);
                }

                foreach (var resolution in request.Resolutions)
                {
                    var procJob = new ImageProcessingJob
                    {
                        Id         = uploadResult.Identifier,
                        Overlay    = request.EventOverlay,
                        Resolution = resolution
                    };
                    var saveJob = new ImageSaveJob
                    {
                        UserId     = Guid.Parse(identity.Identity.Name),
                        Message    = request.Message,
                        SourceId   = uploadResult.Identifier,
                        Resolution = resolution
                    };
                    procJob.Successors.Add(saveJob);
                    await messageRepo.SendImageProcessingJob(procJob);
                }
                var model = new Home {
                    Message = $"Auftrag mit Bild {request.File?.Name} wurde gestartet"
                };
                model.Jobs = await imageRepo.GetProcessingJobs(Guid.Parse(identity.Identity.Name));

                return(View["Home", model]);
            });
        }