Example #1
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            var user    = UMC.Security.Identity.Current;
            var groupId = UMC.Data.Utility.Guid(this.AsyncDialog("id", d =>
            {
                this.Prompt("请传入参数");
                return(this.DialogValue(user.Id.ToString()));
            }), true) ?? Guid.Empty;

            var Seq = this.AsyncDialog("seq", g =>
            {
                if (request.SendValues != null)
                {
                    return(this.DialogValue(request.SendValues["Seq"] ?? "0"));
                }
                else
                {
                    return(this.DialogValue("0"));
                }
            });
            WebResource oosr     = WebResource.Instance();//as OssResource;
            var         media_id = UMC.Web.UIDialog.AsyncDialog("media_id", g =>
            {
                if (request.IsApp)
                {
                    var f = Web.UIDialog.CreateDialog("File");
                    f.Config.Put("Submit", new UIClick(new WebMeta(request.Arguments.GetDictionary()).Put(g, "Value"))
                    {
                        Command = request.Command,
                        Model   = request.Model
                    });
                    return(f);
                }
                else
                {
                    var webr = UMC.Data.WebResource.Instance();
                    var from = new Web.UIFormDialog()
                    {
                        Title = "图片上传"
                    };

                    from.AddFile("选择图片", "media_id", webr.ImageResolve(groupId, "1", 4));

                    from.Submit("确认上传", request, "image");
                    return(from);
                }
            });

            var pictureEntity = UMC.Data.Database.Instance().ObjectEntity <UMC.Data.Entities.Picture>();

            pictureEntity.Order.Asc(new Data.Entities.Picture {
                Seq = 0
            });
            pictureEntity.Where.Reset().And().Equal(new Data.Entities.Picture {
                group_id = groupId
            });
            if (String.Equals(media_id, "none"))
            {
                var seq = UMC.Data.Utility.Parse(Seq, 0);
                if (request.IsApp == false)
                {
                    this.AsyncDialog("Confirm", s =>
                    {
                        return(new Web.UIConfirmDialog(String.Format("确认删除此组第{0}张图片吗", seq))
                        {
                            Title = "删除提示"
                        });
                    });
                }

                if (seq == 1)
                {
                    pictureEntity.Where.And().Greater(new Data.Entities.Picture {
                        Seq = 1
                    });
                    var seqs = pictureEntity.Single();
                    if (seqs != null)
                    {
                        UMC.Data.Database.Instance().ObjectEntity <UMC.Data.Entities.Picture>()
                        .Where.And().Equal(new Data.Entities.Picture {
                            Seq = 1, group_id = groupId
                        })
                        .Entities.Update(new Data.Entities.Picture {
                            UploadDate = DateTime.Now
                        });
                        pictureEntity.Where.And().Equal(new UMC.Data.Entities.Picture {
                            Seq = seqs.Seq
                        });

                        oosr.Transfer(new Uri(oosr.ResolveUrl(seqs.group_id.Value, seqs.Seq, 0)), groupId, seq);
                    }
                    else
                    {
                        pictureEntity.Where.Reset().And().Equal(new UMC.Data.Entities.Picture
                        {
                            Seq      = 1,
                            group_id = groupId
                        });
                    }
                    pictureEntity.Delete();
                }
                else
                {
                    pictureEntity.Where.And().Equal(new UMC.Data.Entities.Picture {
                        Seq = seq
                    });
                    pictureEntity.Delete();
                }
            }
            else
            {
                var type = this.AsyncDialog("type", g => this.DialogValue("jpg"));
                var seq  = UMC.Data.Utility.Parse(Seq, -1);
                if (media_id.StartsWith("http://") || media_id.StartsWith("https://"))
                {
                    var url = new Uri(media_id);
                    if (url.Host.StartsWith("oss."))
                    {
                        if (seq > -1)
                        {
                            if (seq < 1)
                            {
                                seq = (pictureEntity.Max(new Data.Entities.Picture {
                                    Seq = 0
                                }).Seq ?? 0) + 1;
                            }

                            UploadImage(groupId, seq, request.UserHostAddress, user.Id);
                        }
                        if (url.AbsolutePath.EndsWith(type, StringComparison.CurrentCultureIgnoreCase))
                        {
                            oosr.Transfer(url, groupId, seq, type);
                        }
                        else
                        {
                            oosr.Transfer(new Uri(String.Format("{0}?x-oss-process=image/format,{1}", media_id, type)), groupId, seq, type);
                        }
                    }
                    else
                    {
                        if (seq < 1)
                        {
                            seq = (pictureEntity.Max(new Data.Entities.Picture {
                                Seq = 0
                            }).Seq ?? 0) + 1;
                        }
                        UploadImage(groupId, seq, request.UserHostAddress, user.Id);
                        oosr.Transfer(new Uri(media_id), groupId, seq);
                    }
                }
            }

            this.Context.Send(new WebMeta().Put("type", "image").Put("id", groupId.ToString()), true);
        }