Beispiel #1
0
        public WorkpacketUpdate GetWorkpacketUpdate()
        {
            WorkpacketUpdate result = null;
            var fileBytes           = _file.InputStream;

            if (IsImage(this._file))
            {
                result = new CreateImageDocumentUpdate()
                {
                    FolderItemIndex = -1,
                    ImageData       = fileBytes
                };
            }
            else
            {
                result = new CreateDesktopDocumentUpdate()
                {
                    DesktopFileData   = fileBytes,
                    DocumentExtension = _file.FileName.Substring(_file.FileName.LastIndexOf('.') + 1),
                    FolderItemIndex   = -1
                };
            }

            return(result);
        }
Beispiel #2
0
        /// <summary>
        /// Creates a new workpacket using request and existing workpacket
        /// by updating existing workpacket with request into new workpacket
        /// </summary>
        /// <param name="sessionTokenHeader">p360 login session</param>
        /// <param name="workpacket">model workpacket retrieved from p360</param>
        /// <param name="request">request with updates to apply to workpacket</param>
        /// <returns></returns>
        public async Task <Workpacket> CreateFromWorkpacketAsync(SessionTokenHeader sessionTokenHeader, string workpacketId, Workpacket workpacket, UpdateRequest request)
        {
            // Create merged request from workpacket and request
            var fileUpdates = _workpacketUpdateDomainService.CreateFromFiles(new Files(workpacket?.Folder?.FolderItems).Add(request.GetFiles()));
            var dataUpdates = _workpacketUpdateDomainService.CreateFromDataAndWorkpacket(workpacketId, request, workpacket);

            // create p360 request
            WorkpacketUpdate[] workpacketUpdates = new WorkpacketUpdate[fileUpdates.Length + 1];
            fileUpdates.CopyTo(workpacketUpdates, 0);
            workpacketUpdates[workpacketUpdates.Length - 1] = dataUpdates;

            // execute request
            var result = await Service.CreateWorkpacketAsync(
                sessionTokenHeader,
                _p360ServiceData.CurrentValue.ProcessName,
                _p360ServiceData.CurrentValue.NodeName,
                workpacketUpdates
                );

            await Service.ForwardWorkpacketAsync(sessionTokenHeader, result.CreateWorkpacketResult.Id);

            // map
            var response = _mapper.Map <Workpacket>(result.CreateWorkpacketResult);

            return(response);
        }
Beispiel #3
0
        /// <summary>
        /// Creates new workpacket based on existing workpacket with property WEB_ID equals to <paramref name="workpacketId"/>
        /// if one exists;
        /// The new workpacket will have all the same attributes as base attributes with whatever changes are in <paramref name="request"/>
        /// </summary>
        /// <param name="sessionTokenHeader"></param>
        /// <param name="workpacketId"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <Workpacket> UpdateFromWorkpacketAsync(SessionTokenHeader sessionTokenHeader, string workpacketId, BaseForm request)
        {
            // search for existing workpacket to update from
            var workpacket = await _workpacketSearchService.SearchAsync(sessionTokenHeader, workpacketId);

            if (workpacket == null)
            {
                workpacket = await _workpacketSearchService.SearchArchiveAsync(sessionTokenHeader, (request.FormName, workpacketId));

                if (workpacket == null)
                {
                    throw new ArgumentException($"{nameof(workpacketId)} could not be found.");
                }
            }

            // map to p360 request
            WorkpacketUpdate[] workpacketUpdates = null;
            var dataUpdates = _workpacketUpdateDomainService.CreateFromData(request);

            if (request.Files != null && request.Files.Count > 0)
            {
                var fileUpdates = _workpacketUpdateDomainService.CreateFromFiles(new Files(request.Files));
                workpacketUpdates = new WorkpacketUpdate[fileUpdates.Length + 1];
                fileUpdates.CopyTo(workpacketUpdates, 0);
                workpacketUpdates[workpacketUpdates.Length - 1] = dataUpdates;
            }
            else
            {
                workpacketUpdates = new WorkpacketUpdate[] { dataUpdates };
            }

            // execute request
            var result = await Service.CreateWorkpacketAsync(
                sessionTokenHeader,
                _p360ServiceData.CurrentValue.ProcessName,
                _p360ServiceData.CurrentValue.NodeName,
                workpacketUpdates
                );

            await Service.ForwardWorkpacketAsync(sessionTokenHeader, result.CreateWorkpacketResult.Id);

            // map
            var response = _mapper.Map <Workpacket>(result.CreateWorkpacketResult);

            return(response);
        }
Beispiel #4
0
        public async Task <Workpacket> CreateAsync(SessionTokenHeader sessionTokenHeader, BaseForm request)
        {
            //-Adds a dummy file if wp doesn't contain file attachments
            if (!request.Files.Any() && _dummyFileInformation.CurrentValue.EnableDummyFile)
            {
                request.Files.Add(CreateDummyFile(_dummyFileInformation.CurrentValue.FileName));
            }
            // convert to p360 input
            var fileUpdates = _workpacketUpdateDomainService.CreateFromFiles(request.GetFiles());
            var dataUpdates = _workpacketUpdateDomainService.CreateFromData(request);

            // create p360 request
            WorkpacketUpdate[] workpacketUpdates = new WorkpacketUpdate[fileUpdates.Length + 1];
            fileUpdates.CopyTo(workpacketUpdates, 0);
            workpacketUpdates[workpacketUpdates.Length - 1] = dataUpdates;

            // execute request
            var result = await Service.CreateWorkpacketAsync(
                sessionTokenHeader,
                _p360ServiceData.CurrentValue.ProcessName,
                _p360ServiceData.CurrentValue.NodeName,
                workpacketUpdates
                );

            await Service.ForwardWorkpacketAsync(sessionTokenHeader, result.CreateWorkpacketResult.Id);

            // map
            var response = _mapper.Map <Workpacket>(result.CreateWorkpacketResult);

            if (response?.Folder?.Attributes?.Properties?.FirstOrDefault(x => x.Name == "DOCUMENT_NAME") != null)
            {
                response.WorkpacketId = response?.Folder?.Attributes?.Properties?.FirstOrDefault(x => x.Name == "DOCUMENT_NAME").Value.ToString();
            }
            else
            {
                response.WorkpacketId = response?.TrackingId.ToString();
            }

            return(response);
        }