示例#1
0
        public OperationResultDto IsEventValid(CompanyQuizEventMappingSaveDTO eventQuizMapping)
        {
            var defaultAcDomain = CompanyAcServerModel.GetOneById(eventQuizMapping.companyAcDomainId).Value;

            if (defaultAcDomain == null)
            {
                return(OperationResultDto.Error("Company was not found"));
            }

            var acUri       = new Uri(defaultAcDomain.AcServer);
            var acProvider  = new AdobeConnectProvider(new ConnectionDetails(acUri));
            var acProxy     = new AdobeConnectProxy(acProvider, Logger, acUri);
            var loginResult = acProxy.Login(new UserCredentials(defaultAcDomain.Username, defaultAcDomain.Password));

            if (!loginResult.Success)
            {
                return(null);
            }

            var eventRegistrationDetails = acProxy.GetEventRegistrationDetails(eventQuizMapping.acEventScoId);

            string[] requiredFieldNames = new string[3] {
                "School", "State", "Trainee number or ID"
            };
            StringBuilder errorMessage = new StringBuilder();

            foreach (var fieldName in requiredFieldNames)
            {
                if (!eventRegistrationDetails.EventFields.Any(ef =>
                                                              string.Equals(ef.Description, fieldName, StringComparison.OrdinalIgnoreCase)))
                {
                    errorMessage.Append($"{fieldName} field is missed.{Environment.NewLine}");
                }
            }

            var eventInfo = acProxy.GetEventInfo(eventQuizMapping.acEventScoId);

            if (string.IsNullOrEmpty(eventInfo.EventInfo.Info))
            {
                errorMessage.Append(
                    $"Event info should be set for the event with sco-id {eventQuizMapping.acEventScoId}.{Environment.NewLine}");
            }

            if (string.IsNullOrEmpty(eventInfo.EventInfo.SpeakerName))
            {
                errorMessage.Append(
                    $"Speaker name should be set for the event with sco-id {eventQuizMapping.acEventScoId}.{Environment.NewLine}");
            }

            if (!string.IsNullOrEmpty(errorMessage.ToString()))
            {
                errorMessage.Append(
                    $"Please fix the event details in Adobe Connect and try again.{Environment.NewLine}");
            }

            return(string.IsNullOrEmpty(errorMessage.ToString())
                ? OperationResultDto.Success()
                : OperationResultDto.Error(errorMessage.ToString()));
        }