private static ListItem MapToListItem(BusinessDocumentViewModel viewModel, ListItem targetListItem) { targetListItem[FileLeafRefField] = viewModel.Name; targetListItem[DocumentPurposeField] = viewModel.Purpose; targetListItem[InChargeField] = FieldUserValue.FromUser(viewModel.InCharge); return(targetListItem); }
// POST: api/BusinessDocuments public IHttpActionResult Post([FromBody] BusinessDocumentViewModel value) { string validationError = null; if (!ValidateModel(value, out validationError)) { return(BadRequest(validationError)); } using (var clientContext = WebAPIHelper.GetClientContext(this.ControllerContext)) { // Get the documents from the Business Documents library List businessDocsLib = clientContext.Web.GetListByUrl("/BusinessDocs"); // Ensure the root folder is loaded Folder rootFolder = businessDocsLib.EnsureProperty(l => l.RootFolder); ListItem newItem = businessDocsLib.CreateDocument(value.Name, rootFolder, DocumentTemplateType.Word); // Update the new document metadata newItem[DocumentPurposeField] = value.Purpose; newItem[InChargeField] = FieldUserValue.FromUser(value.InCharge); newItem.Update(); // Ensure the needed metadata are loaded clientContext.Load(newItem, item => item.Id, item => item[FileLeafRefField], item => item[InChargeField], item => item[DocumentPurposeField]); newItem.File.CheckIn("", CheckinType.MajorCheckIn); clientContext.ExecuteQuery(); BusinessDocumentViewModel viewModel = ListItemToViewModel(newItem); return(Created($"/api/BusinessDocuments/{viewModel.Id}", viewModel)); } }
// PUT: api/BusinessDocuments/5 public IHttpActionResult Put(int id, [FromBody] BusinessDocumentViewModel value) { string validationError = null; if (!ValidateModel(value, out validationError)) { return(BadRequest(validationError)); } using (var clientContext = WebAPIHelper.GetClientContext(this.ControllerContext)) { // Get the documents from the Business Documents library List businessDocsLib = clientContext.Web.GetListByUrl("/BusinessDocs"); ListItem businessDocItem = TryGetListItemById(businessDocsLib, id); // If not found, return the appropriate status code if (businessDocItem == null) { return(NotFound()); } // Update the list item properties MapToListItem(value, businessDocItem); businessDocItem.Update(); clientContext.ExecuteQuery(); return(Ok()); } }
// GET: api/BusinessDocuments/5 public IHttpActionResult Get(int id) { using (var clientContext = WebAPIHelper.GetClientContext(this.ControllerContext)) { // Get the documents from the Business Documents library List businessDocsLib = clientContext.Web.GetListByUrl("/BusinessDocs"); ListItem businessDocItem = TryGetListItemById(businessDocsLib, id); if (businessDocItem == null) { return(NotFound()); } // Ensure the needed metadata are loaded clientContext.Load(businessDocItem, item => item.Id, item => item[FileLeafRefField], item => item[InChargeField], item => item[DocumentPurposeField]); clientContext.ExecuteQuery(); // Create a view model object from the list item BusinessDocumentViewModel viewModel = ListItemToViewModel(businessDocItem); return(Ok(viewModel)); } }
private static bool ValidateModel(BusinessDocumentViewModel viewModel, out string message) { // Validate the purpose is a valid value if (!ValidDocumentPurposes.Contains(viewModel.Purpose)) { message = "The specified document purpose is invalid"; return(false); } message = string.Empty; return(true); }