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)); }
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()); } }