/// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            CreateSiteResponse response = new CreateSiteResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("Site", targetDepth))
                {
                    var unmarshaller = SiteUnmarshaller.Instance;
                    response.Site = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
Beispiel #2
0
        public void Complete_if_provisioning_is_complete()
        {
            var requestCommand = CreateRequestCommand();

            var createSiteResponse = new CreateSiteResponse
            {
                ProjectId = _projectId,
                SiteUrl   = _siteUrl,
                RequestId = 1,
                ProvisioningRequestStatus = ProvisioningRequestStatus.Provisioned
            };

            Test.Saga <ProvisioningSaga>()
            .ExpectPublish <ProvisioningStatusChanged>(m =>
                                                       m.ProjectId == requestCommand.ProjectId &&
                                                       m.RequestId == -1 &&
                                                       m.SiteUrl == null &&
                                                       m.ProvisioningRequestStatusId == (int)ProvisioningRequestStatus.Pending)
            .ExpectSend <CreateSiteRequest>(m =>
                                            m.ProjectId == requestCommand.ProjectId &&
                                            m.SiteTitle == requestCommand.ProjectTitle &&
                                            m.SiteDescription == requestCommand.ProjectDescription &&
                                            m.UsersInRoles[0].UserId == _userRolesList[0].UserId &&
                                            m.UsersInRoles[1].UserId == _userRolesList[1].UserId &&
                                            m.UsersInRoles[2].UserId == _userRolesList[2].UserId &&
                                            m.UsersInRoles[3].UserId == _userRolesList[3].UserId)
            .ExpectSend <NotifyRequestForSiteReceived>(m =>
                                                       m.ProjectId == requestCommand.ProjectId &&
                                                       m.ProjectName == requestCommand.ProjectTitle &&
                                                       m.UserIds.Contains("WS12323"))
            .ExpectPublish <ProvisioningStatusChanged>(m =>
                                                       m.ProjectId == _projectId &&
                                                       m.SiteUrl == _siteUrl &&
                                                       m.ProvisioningRequestStatusId == (int)ProvisioningRequestStatus.Provisioned)
            .ExpectSend <GenerateDmpCommand>(m => m.ProjectId == requestCommand.ProjectId && m.SiteUrl == _siteUrl)
            .When(x =>
            {
                x.Handle(requestCommand);
                x.Handle(createSiteResponse);
            })
            .AssertSagaCompletionIs(true);
        }
        /// <summary>
        /// Handles the response from the SharePoint integration endpoint that is responsible for
        /// the provisioning.
        /// </summary>
        /// <param name="message">CreateSiteResponse message.</param>
        public void Handle(CreateSiteResponse message)
        {
            Data.RequestId = message.RequestId;
            Data.SiteUrl   = message.SiteUrl;
            Data.ProvisioningRequestStatus = message.ProvisioningRequestStatus.ToString();

            Bus.Publish <ProvisioningStatusChanged>(m =>
            {
                m.ProjectId = Data.ProjectId;
                m.SiteUrl   = Data.SiteUrl;
                m.RequestId = Data.RequestId;
                m.ProvisioningRequestStatusId = (int)message.ProvisioningRequestStatus;
            });

            if (message.ProvisioningRequestStatus == ProvisioningRequestStatus.Provisioned)
            {
                GenerateDmp(Data.ProjectId, Data.SiteUrl);
                Complete();
            }
        }
Beispiel #4
0
        public void Handle(CreateSiteRequest message)
        {
            if (true /*_sharePoint.TryLoadRootWeb(o => o)*/)
            {
                //var siteName = _spSiteNamePrefix + message.ProjectId;
                //var siteCreationRequestHelper = new SiteCreationRequestHelper();


                //var args = new SiteCreationRequestArgs
                //            {
                //                SiteId = siteName,
                //                Title = message.SiteTitle,
                //                Description = message.SiteDescription,
                //                Owners = message.UsersInRoles.Where(u => u.Role == "Owners").Select(u => u.UserId).ToArray(),
                //                Members = message.UsersInRoles.Where(u => u.Role == "Members").Select(u => u.UserId).ToArray(),
                //                Visitors = message.UsersInRoles.Where(u => u.Role == "Visitors").Select(u => u.UserId).ToArray()
                //            };


                //const string listName = "URDMS - Site Creation Request";

                //// Generate the request
                //var requestId = siteCreationRequestHelper.CreateSiteRequest(args, listName);

                //// Poll the list item for changes in status
                //var poller = new SiteCreationRequestListPoller(_sharePoint, requestId, listName);
                //var result = poller.Poll();

                var response = new CreateSiteResponse
                {
                    ProjectId = message.ProjectId,
                    //RequestId = requestId,
                    //ProvisioningRequestStatus = result.ProvisioningRequestStatus
                };

                // Create a dummy response for now.
                response.RequestId = 2342;
                response.ProvisioningRequestStatus = ProvisioningRequestStatus.Provisioned;
                response.SiteUrl = "http://sharepoint.yourdomain.edu.au/project/research/2";

                // Handle the Polling result.
                //switch (result.ProvisioningRequestStatus)
                //{
                //    case ProvisioningRequestStatus.Provisioned:
                //        Log.InfoFormat("[URDMS] Site for Project {0} created ({1})", message.ProjectId, result.SiteUrl);
                //        response.SiteUrl = result.SiteUrl;
                //        break;
                //    case ProvisioningRequestStatus.Error:
                //        Log.ErrorFormat("[URDMS] Site provisioning for Project {0} failed.", message.ProjectId);
                //        break;
                //    case ProvisioningRequestStatus.TimeOut:
                //    case ProvisioningRequestStatus.Pending:
                //        Log.ErrorFormat("[URDMS] Site provisioning for Project {0} has timed out or is still pending.", message.ProjectId);
                //        break;
                //    default:
                //        throw new ArgumentOutOfRangeException();
                //}

                Bus.Reply(response);
            }
        }