public object Get(Assets request)
        {
            IAuthSession session = this.Request.GetSession();
            List<Asset> items = new List<Asset>();
            if (session.IsAuthenticated)
            {
                if (!string.IsNullOrEmpty(request.Tag))
                {
                    request.Tag = request.Tag.Replace("-", " ").ToLower();
                    items = Repository.Find<Asset>(t => t.UserAuthId == int.Parse(session.UserAuthId) && t.Tags.Contains(request.Tag))
                                  .OrderBy(t => t.Title)
                                  .ToList();
                }
                else if (request.Id.HasValue)
                {
                    items = Repository.Find<Asset>(t => t.UserAuthId == int.Parse(session.UserAuthId) && t.Id == request.Id.Value)
                                  .OrderBy(t => t.Title)
                                  .ToList();
                }
                else
                {
                    items = Repository.Find<Asset>(t => t.UserAuthId == int.Parse(session.UserAuthId))
                                  .OrderBy(t => t.Title)
                                  .ToList();
                }

                if (this.RequestContext.ResponseContentType == "text/html")
                {
                    // Razor:
                    return new AssetsResponse { items = items, session = session, Tag = request.Tag };
                }
                else
                {
                    // API:
                    return items;
                }
            }
            else
            {
                if (this.RequestContext.ResponseContentType == "text/html")
                {
                    // Razor:
                    ViewMessage message = new ViewMessage
                    {
                        Title = "Please sign in",
                        Introduction = "",
                        Message = @"<p class='lead'>You need to sign in first. <a href='/SignIn?return=" + this.Request.RawUrl + "'>Click here</a> to sign in.</p>"
                    };
                    return new HttpResult(message) { View = "Message" };
                }
                else
                {
                    // API:
                    return new HttpResult("Please Sign in first.", HttpStatusCode.Unauthorized);
                }
            }
        }
        public object Post(Assets request)
        {
            IAuthSession session = this.Request.GetSession();
            if (session.IsAuthenticated)
            {
                Asset asset = request.Photo;
                asset.UserAuthId = int.Parse(session.UserAuthId);
                if (!string.IsNullOrEmpty(asset.Tags))
                    asset.Tags = asset.Tags.ToLower();

                List<ValidationResult> results = Utils.General.ValidateObject(asset);

                if (!results.Any())
                {
                    asset = Repository.Add<Asset>(asset);
                    return new HttpResult(asset, HttpStatusCode.Created);
                }
                else
                {
                    return new HttpResult(results, HttpStatusCode.BadRequest);
                }
            }
            else
            {
                return new HttpResult("Please Sign in first.", HttpStatusCode.Unauthorized);
            }
        }
 public object Delete(Assets request)
 {
     IAuthSession session = this.Request.GetSession();
     if (session.IsAuthenticated)
     {
         var assets = Repository.Find<Asset>(t => t.UserAuthId == int.Parse(session.UserAuthId) && t.Id == request.Id);
         if (assets.Count() > 0)
         {
             Repository.Delete<Asset>(assets[0].Id);
         }
         return null;
     }
     else
     {
         return new HttpResult("Please Sign in first.", HttpStatusCode.Unauthorized);
     }
 }