protected virtual void RequestFailure(StorageRequest request, int code, string message)
 {
     request.Result = false;
     request.StatusCode = code;
     request.Message = message;
     request.HandledBy = this.Name;
 }
 public override void Handle(StorageRequest request)
 {
     if (request.Type == RequestType.Check)
     {
         this.RequestSeuccess(request);
     }
     else
     {
         base.Handle(request);
     }
 }
        public string Handle(object request, RequestType type)
        {
            var currentRequest = new StorageRequest(request, type);

            foreach (var handler in this.Chain)
            {
                handler.Handle(currentRequest);
                if (currentRequest.Result)
                {
                    break;
                }
            }

            return currentRequest.ToString();
        }
        public virtual void Handle(StorageRequest request)
        {
            try
            {
                switch (request.Type)
                {
                    case RequestType.Add:
                        this.Add(request.Body);
                        this.RequestSeuccess(request);

                        break;
                    case RequestType.Check:
                        if (this.Check(request.Body))
                        {
                            this.RequestSeuccess(request);
                        }
                        else
                        {
                            this.RequestFailure(request, 404, "Not Found");
                        }

                        break;
                    case RequestType.Buy:
                        if (this.Remove(request.Body))
                        {
                            this.RequestSeuccess(request);
                        }
                        else
                        {
                            this.RequestFailure(request, 404, "Not Found");
                        }

                        break;
                    default:
                        break;
                }
            }
            catch (ApplicationException ex)
            {
                this.RequestFailure(request, 403, ex.Message);
            }
        }
 protected virtual void RequestSeuccess(StorageRequest request)
 {
     request.Result = true;
     request.StatusCode = 200;
     request.Message = "OK";
     request.HandledBy = this.Name;
 }