public P360FormService.Models.Responses.Workpacket ToWorkpacket(IEnumerable <CatalogItem> catalogItems) { P360FormService.Models.Responses.Workpacket result = new P360FormService.Models.Responses.Workpacket(); // FolderItems result.Folder.FolderItems = catalogItems .Select(ci => new P360FormService.Models.Responses.FolderItem { Document = _mapper.Map <P360FormService.Models.Responses.Document>(ci.Document) }).ToArray(); // WorklistAttributes result.WorklistAttributes = _mapper.Map <P360FormService.Models.Responses.Attributes>(catalogItems.First().Attributes); result.Folder.Attributes = result.WorklistAttributes; return(result); }
/// <summary> /// Create SetPropertiesUpdate from new update request and existing workpacket properties /// New request will overwrite existing workpacket properties with exception of web_id /// </summary> /// <param name="request"></param> /// <param name="workpacket"></param> /// <returns></returns> public SetPropertiesUpdate CreateFromDataAndWorkpacket(string workpacketId, UpdateRequest request, P360FormService.Models.Responses.Workpacket workpacket) { var document_name = new Property { Name = "DOCUMENT_NAME", Value = workpacketId.ToString() }; if (workpacket == null) { return(null); } var workpacketProperties = workpacket.Folder.Attributes.Properties .Select(p => { var property = _mapper.Map <Property>(p); var requestProperty = request.DataUpdates.FirstOrDefault(r => r.FieldName == property.Name); if (requestProperty != null) { property.Value = requestProperty.FieldValue; } return(property); }); var requestProperties = request.DataUpdates .Where(fd => !workpacket.Folder.Attributes.Properties.Any(p => p.Name == fd.FieldName)) .Select(fd => new Property { Name = fd.FieldName, Value = fd.FieldValue }) .Concat(new Property[] { document_name }); // handle request data properties IEnumerable <Property> properties = workpacketProperties; if (requestProperties != null && requestProperties.Count() > 0) { properties = workpacketProperties.Concat(requestProperties); } // handle request files' properties var requestFiles = request.GetFiles().AllFiles; int folderItems = workpacket?.Folder?.FolderItems == null ? 1 : workpacket.Folder.FolderItems.Count() + 1; if (requestFiles.Count > 0) { properties = properties.Concat( requestFiles.Select((rf, i) => new Property { Name = $"DOC_{folderItems + i}", Value = rf.FileName } )); } SetPropertiesUpdate result = new SetPropertiesUpdate { Properties = properties.ToArray(), Target = PropertyUpdateTarget.FolderAttributes }; return(result); }