示例#1
0
        public ActionResult Post([FromBody] CheckOutItem value)
        {
            // Validation.
            if ((value == null) ||
                (value.Id != string.Empty) ||
                (ModelState.IsValid == false))
            {
                return(BadRequest());
            }

            // Object Flow Validation.
            bool isObjectFlowValid = _iFlowValid.IsValidOperation(BaseValidatorType.Create, value, null);

            if (!isObjectFlowValid)
            {
                return(BadRequest());
            }

            // Add.
            _iCheckOutServices.AddCheckOut(value);

            // Event Bus Publish.
            if (value.CurrentState == CheckOutItem.STATE_CLOSED)
            {
                CheckOutEvent checkOutEvent = CheckOutEvent.FromItem(value);
                _iEventBus.Publish(checkOutEvent);
            }

            // Return.
            return(Created("GetCheckOut", value));
        }
示例#2
0
        public ActionResult Put([FromBody] CheckOutItem value)
        {
            // Validation.
            if ((value == null) ||
                (value.Id == string.Empty) ||
                (ModelState.IsValid == false))
            {
                return(BadRequest());
            }

            // Object Flow Validation.
            CheckOutItem checkOutItem = _iCheckOutServices.GetCheckOut(value.Id).Result;

            if (checkOutItem == null)
            {
                return(NotFound());
            }
            bool isObjectFlowValid = _iFlowValid.IsValidOperation(BaseValidatorType.Update, checkOutItem, value);

            if (!isObjectFlowValid)
            {
                return(BadRequest());
            }

            // Update.
            bool blnResultUpdate = _iCheckOutServices.UpdateCheckOut(value.Id, value).Result;

            // Return with case.
            if (blnResultUpdate)
            {
                // Event Bus Publish.
                if (value.CurrentState == CheckOutItem.STATE_CLOSED)
                {
                    CheckOutItem  checkOutItemUpdated = _iCheckOutServices.GetCheckOut(value.Id).Result;
                    CheckOutEvent checkOutEvent       = CheckOutEvent.FromItem(checkOutItemUpdated);
                    _iEventBus.Publish(checkOutEvent);
                }

                return(Accepted());
            }
            else
            {
                return(NotFound());
            }
        }