Пример #1
0
 private static ListItem MapToListItem(BusinessDocumentViewModel viewModel, ListItem targetListItem)
 {
     targetListItem[FileLeafRefField]     = viewModel.Name;
     targetListItem[DocumentPurposeField] = viewModel.Purpose;
     targetListItem[InChargeField]        = FieldUserValue.FromUser(viewModel.InCharge);
     return(targetListItem);
 }
Пример #2
0
        // 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));
            }
        }
Пример #3
0
        // 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());
            }
        }
Пример #4
0
        // 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));
            }
        }
Пример #5
0
        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);
        }