public void Add(OperationResultDto operationResult)
        {
            InitOnece();
            if (operationResult == null)
            {
                return;
            }
            var data = OperationResultData.Create(operationResult);
            List <OperationResultData> toRemoves = new List <OperationResultData>();

            lock (_list) {
                // 新的在队尾,旧的在队头
                _list.Add(data);
                while (_list.Count > _capacityCount)
                {
                    toRemoves.Add(_list[0]);
                    _list.RemoveAt(0);
                }
            }
            using (var db = VirtualRoot.CreateLocalDb()) {
                var col = db.GetCollection <OperationResultData>();
                foreach (var item in toRemoves)
                {
                    col.Delete(item.Id);
                }
                col.Insert(data);
            }
            VirtualRoot.DaemonWsClient.SendAsync(new WsMessage(Guid.NewGuid(), WsMessage.OperationReceived));
        }
Exemple #2
0
        public OperationResultDto <ContaminacionDto> GetContaminationByShortDateAndHour(DateTime datetime, int hour)
        {
            OperationResultDto <ContaminacionDto> result;

            try
            {
                result = new OperationResultDto <ContaminacionDto>
                {
                    Success = true,
                    Result  = Context.Contaminacion
                              .Where(p => p.Fecha.Equals(datetime) && p.Hora == hour)
                              .Include(p => p.Centro)
                              .Include(p => p.Noreste)
                              .Include(p => p.Noroeste)
                              .Include(p => p.Sureste)
                              .Include(p => p.Suroeste)
                              .FirstOrDefault()
                              .ContaminationModelToDtoMapper()
                };
            }
            catch (Exception ex)
            {
                result = new OperationResultDto <ContaminacionDto> {
                    Error = ex.ErrorMessage()
                };
            }

            return(result);
        }
Exemple #3
0
        public OperationResultDto <List <ContaminacionDto> > GetContaminationByShortDate(DateTime datetime)
        {
            OperationResultDto <List <ContaminacionDto> > result;

            try
            {
                result = new OperationResultDto <List <ContaminacionDto> >
                {
                    Success = true,
                    Result  = Context.Contaminacion
                              .Where(p => p.Fecha.Equals(datetime))
                              .Include(p => p.Centro)
                              .Include(p => p.Noreste)
                              .Include(p => p.Noroeste)
                              .Include(p => p.Sureste)
                              .Include(p => p.Suroeste)
                              .Select(p => p.ContaminationModelToDtoMapper()).ToList()
                };
            }
            catch (Exception ex)
            {
                result = new OperationResultDto <List <ContaminacionDto> > {
                    Error = ex.ErrorMessage()
                };
            }

            return(result);
        }
Exemple #4
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()));
        }
Exemple #5
0
        // TRICK: used by OfflineQuizService.SendAnswers
        public OperationResultDto SendCertificate(string postQuizResultGuid)
        {
            Guid guid;
            var  canParse = Guid.TryParse(postQuizResultGuid, out guid);

            if (!canParse)
            {
                var error = new Error(Errors.CODE_ERRORTYPE_GENERIC_ERROR, ErrorsTexts.GetResultError_NotFound, "No item with such id found");
                this.LogError("EmailService.SendCertificate", error);
                throw new FaultException <Error>(error, error.errorMessage);
            }

            var postQuizResult = QuizResultModel.GetOneByGuid(guid).Value;

            var acDomain = CompanyAcServerModel.GetOneById(postQuizResult.EventQuizMapping.CompanyAcDomain.Id).Value;
            var acUrl    = acDomain.AcServer;
            var apiUrl   = new Uri(acUrl);

            var scoId     = postQuizResult.EventQuizMapping.AcEventScoId;
            var proxy     = new AdobeConnectProxy(new AdobeConnectProvider(new ConnectionDetails(apiUrl)), Logger, apiUrl);
            var eventInfo = proxy.GetEventInfo(scoId);

            if (!eventInfo.Success)
            {
                throw new InvalidOperationException();
            }


            var emailsNotSend = new List <string>();

            if (string.IsNullOrEmpty(postQuizResult.ACEmail))
            {
                Logger.Warn($"[SendCertificate] Email is empty. quizResultId={postQuizResult.Id}");
                emailsNotSend.Add(postQuizResult.ParticipantName);
            }

            var model = new CertificateEmailModel(Settings)
            {
                CertificateLink = postQuizResult.BuildDownloadUrl(Settings.CertificatesUrl),
                ParticipantName = postQuizResult.ParticipantName,
                EventName       = eventInfo.EventInfo.Name
            };
            bool sentSuccessfully = MailModel.SendEmailSync(postQuizResult.ParticipantName, postQuizResult.ACEmail,
                                                            Emails.CertificateSubject,
                                                            model, Common.AppEmailName, Common.AppEmail);

            if (!sentSuccessfully)
            {
                emailsNotSend.Add(postQuizResult.ACEmail);
            }
            return(emailsNotSend.Any() ? OperationResultDto.Error("Not all emails were sent correctly") : OperationResultDto.Success());
        }
Exemple #6
0
        public async Task <Status> Post(WebSiteDto site)
        {
            var client    = _clientHelper.GetWebSiteClient();
            var operation = await client.WebSites.BeginSwapingSlotsAsync(WebSpace, Name, Slot, CancellationToken.None);

            Output = new OperationResultDto
            {
                OperationId = operation.OperationId,
                SiteName    = Name,
                WebSpace    = WebSpace
            };
            return(202);
        }
Exemple #7
0
        public OperationResultDto PublishQuiz(int lmsUserParametersId, string courseId, int quizId)
        {
            var lmsUserParameters = LmsUserParametersModel.GetOneById(lmsUserParametersId).Value;

            if (lmsUserParameters != null)
            {
                var lmsApi = LmsFactory.GetEGCEnabledLmsAPI((LmsProviderEnum)lmsUserParameters.CompanyLms.LmsProviderId);

                lmsApi.PublishQuiz(lmsUserParameters.CompanyLms.GetLMSSettings(Settings, lmsUserParameters, true), courseId, quizId);

                return(OperationResultDto.Success());
            }

            var error = new Error(Errors.CODE_ERRORTYPE_INVALID_PARAMETER, "Wrong id", "No lms user parameters found");

            this.LogError("AppletResult.PublishQuiz", error);
            throw new FaultException <Error>(error, error.errorMessage);
        }
Exemple #8
0
        public OperationResultDto <ContaminacionDto> GetContaminationByShortDateAndHour(string shortDatetime, int hour)
        {
            OperationResultDto <ContaminacionDto> result;

            try
            {
                var datetime = Convert.ToDateTime(shortDatetime);
                result = ContaminationDatabaseAccess.GetContaminationByShortDateAndHour(datetime, hour);
            }
            catch (Exception ex)
            {
                result = new OperationResultDto <ContaminacionDto> {
                    Error = ex.ErrorMessage()
                };
            }

            return(result);
        }
Exemple #9
0
        public async Task <OperationResultDto <int> > Save(List <ContaminacionDto> listData)
        {
            OperationResultDto <int> result;

            try
            {
                var dateTime = listData.First().FechaCorta;
                var contaminationDatetimeExist = await Context.Contaminacion.FirstOrDefaultAsync(p => p.Fecha.Equals(dateTime));

                if (contaminationDatetimeExist == null)
                {
                    foreach (var item in listData)
                    {
                        await Context.Contaminacion.AddAsync(item.ContaminationDtoToModelMapper());
                    }

                    var response = await Context.SaveChangesAsync();

                    result = new OperationResultDto <int> {
                        Success = true, Result = response
                    };
                }
                else
                {
                    result = new OperationResultDto <int> {
                        Error = $"Ya existen registros de la fecha { dateTime.ToShortDateString() }."
                    };
                }
            }
            catch (Exception ex)
            {
                result = new OperationResultDto <int> {
                    Error = ex.Message
                };
            }

            return(result);
        }
Exemple #10
0
        public OperationResultDto SendRegistrationEmail(EventRegistrationDTO registrationInfo)
        {
            var mapping = CompanyEventQuizMappingModel.GetOneById(registrationInfo.eventQuizMappingId).Value;

            if (mapping == null)
            {
                return(OperationResultDto.Error("There is no event for this info."));
            }

            var acDomain = CompanyAcServerModel.GetOneById(mapping.CompanyAcDomain.Id).Value;
            var apiUrl   = new Uri(acDomain.AcServer);
            var proxy    = new AdobeConnectProxy(new AdobeConnectProvider(new ConnectionDetails(apiUrl)), Logger, apiUrl);

            var loginResult = proxy.Login(new UserCredentials(acDomain.Username, acDomain.Password));

            if (!loginResult.Success)
            {
                throw new InvalidOperationException($"Can't login to AC url {acDomain.AcServer} user {acDomain.Username}");
            }

            var eventInfo = proxy.GetScoInfo(mapping.AcEventScoId);

            if (!eventInfo.Success)
            {
                throw new InvalidOperationException(eventInfo.Status.GetErrorInfo());
            }

            List <string> emailsNotSend = new List <string>();

            try
            {
                //todo: create model based on success/fail
                var model = new EventQuizRegistrationModel(Settings)
                {
                    FirstName      = registrationInfo.FirstName,
                    LastName       = registrationInfo.LastName,
                    EventName      = eventInfo.ScoInfo.Name,
                    EventDesc      = eventInfo.ScoInfo.Description,
                    EventScoId     = eventInfo.ScoInfo.ScoId,
                    EventStartDate = DateTimeHelper.ConvertToEST(eventInfo.ScoInfo.BeginDate).Value,
                    EventEndDate   = DateTimeHelper.ConvertToEST(eventInfo.ScoInfo.EndDate).Value,
                    MailSubject    = Emails.RegistrationSubject,
                    MeetingUrl     = acDomain.AcServer.TrimEnd('/') + "/" + eventInfo.ScoInfo.SourceSco.UrlPath.TrimStart('/'),
                    Email          = registrationInfo.Email
                };

                var attachments = new List <System.Net.Mail.Attachment>();

                var e = new Event
                {
                    //DtStart = new CalDateTime(DateTimeHelper.ConvertToEST(model.EventStartDate).Value),
                    //DtEnd = new CalDateTime(DateTimeHelper.ConvertToEST(model.EventEndDate).Value),
                    DtStart     = new CalDateTime(eventInfo.ScoInfo.BeginDate),
                    DtEnd       = new CalDateTime(eventInfo.ScoInfo.EndDate),
                    Summary     = $"{model.EventName}",
                    Description = model.MeetingUrl,
                    Url         = new Uri(model.MeetingUrl)
                };

                var calendar = new Calendar();
                calendar.Events.Add(e);

                var serializer         = new CalendarSerializer(new SerializationContext());
                var serializedCalendar = serializer.SerializeToString(calendar);
                Logger.Debug(serializedCalendar);

                //var ms = new MemoryStream();
                //using (var writer = new StreamWriter(ms))
                //{
                //    writer.Write(serializedCalendar);
                //    writer.Flush();
                //}
                //ms.Position = 0;
                byte[] bytes = new byte[serializedCalendar.Length * sizeof(char)];
                Buffer.BlockCopy(serializedCalendar.ToCharArray(), 0, bytes, 0, bytes.Length);

                var contype = new System.Net.Mime.ContentType("text/calendar");
                contype.Parameters.Add("method", "REQUEST");
                contype.Parameters.Add("name", "EventInformation.ics");
                var calendarItem = new System.Net.Mail.Attachment(new MemoryStream(bytes), contype);
                calendarItem.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
                attachments.Add(calendarItem);

                var sentSuccessfully = MailModel.SendEmailSync($"{model.FirstName} {model.LastName}", model.Email,
                                                               Emails.RegistrationSubject,
                                                               model, Common.AppEmailName, Common.AppEmail, attachments: attachments);
                if (!sentSuccessfully)
                {
                    emailsNotSend.Add(model.Email);
                }
            }
            catch (Exception e)
            {
                Logger.Error($"[SendRegistrationEmail] error.", e);
                emailsNotSend.Add(registrationInfo.Email);
            }


            return(emailsNotSend.Any() ? OperationResultDto.Error("Not all emails were sent correctly") : OperationResultDto.Success());
        }
Exemple #11
0
        //public OperationResultDto SendCertificateToTeacher(string postQuizResultGuid)
        //{
        //    Guid guid;
        //    var canParse = Guid.TryParse(postQuizResultGuid, out guid);
        //    if (!canParse)
        //    {
        //        var error = new Error(Errors.CODE_ERRORTYPE_GENERIC_ERROR, ErrorsTexts.GetResultError_NotFound, "No item with such id found");
        //        this.LogError("EmailService.SendCertificateToTeacher", error);
        //        throw new FaultException<Error>(error, error.errorMessage);
        //    }
        //    var postQuizResult = QuizResultModel.GetOneByGuid(guid).Value;
        //    var emailsNotSend = new List<string>();
        //    if (string.IsNullOrEmpty(postQuizResult.ACEmail))
        //    {
        //        Logger.Warn($"[SendCertificateToTeacher] Email is empty. quizResultId={postQuizResult.Id}");
        //        emailsNotSend.Add(postQuizResult.ParticipantName);
        //    }

        //    var eventMapping = CompanyEventQuizMappingModel.GetOneById(postQuizResult.EventQuizMapping.Id).Value;
        //    var acUrl = eventMapping.CompanyAcDomain.AcServer;
        //    var login = eventMapping.CompanyAcDomain.Username;
        //    var password = eventMapping.CompanyAcDomain.Password;
        //    var adobeConnectProxy = AdobeConnectAccountService.GetProvider(new AdobeConnectAccess(new Uri(acUrl), login, password), false);

        //    var loginResult = adobeConnectProxy.Login(new UserCredentials(login, password));
        //    if (!loginResult.Success)
        //        throw new InvalidOperationException("Can't login to AC");

        //    var dynamicQuestionAnswers = GetDynamicQuestionAnswers(acUrl, eventMapping.AcEventScoId,
        //        loginResult.Status.SessionInfo, postQuizResult.ACEmail);
        //    var schoolNumber = dynamicQuestionAnswers["school"];
        //    var school = SchoolModel.GetOneByName(schoolNumber);
        //    var schoolEmail = school.SchoolEmail;
        //    if (string.IsNullOrEmpty(schoolEmail))
        //    {
        //        Logger.Warn($"[SendCertificateToTeacher] Teacher Email is empty. quizResultId={postQuizResult.Id}");
        //        emailsNotSend.Add(schoolEmail);
        //    }

        //    var schoolAccountName = school.AccountName;
        //    var model = new TeacherCertificateEmailModel(Settings)
        //    {
        //        CertificateLink =
        //        $"{Settings.CertificatesUrl}/quiz-certificate/{postQuizResult.Guid}/download",
        //        ParticipantName = postQuizResult.ParticipantName,
        //        TeacherName = schoolAccountName
        //    };
        //    bool sentSuccessfully = MailModel.SendEmailSync(schoolAccountName, schoolEmail,
        //                Emails.CertificateSubject,
        //                model, Common.AppEmailName, Common.AppEmail);
        //    if (!sentSuccessfully)
        //    {
        //        emailsNotSend.Add(schoolEmail);
        //    }
        //    return emailsNotSend.Any() ? OperationResultDto.Error("Not all emails were sent correctly") : OperationResultDto.Success();
        //}

        //private static Dictionary<string, string> GetDynamicQuestionAnswers(string acUrl, string scoId, string breezeSession, string userEmail)
        //{
        //    var userStateSchoolAnswersUrl =
        //        $"{acUrl}/api/xml?action=report-event-participants-complete-information&sco-id={scoId}&session={breezeSession}";

        //    var reply = string.Empty;

        //    using (var client = new HttpClient())
        //    {
        //        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));
        //        var request = new HttpRequestMessage(HttpMethod.Get, userStateSchoolAnswersUrl);
        //        reply = client.SendAsync(request).Result.Content.ReadAsStringAsync().Result;
        //    }

        //    var doc = XDocument.Parse(reply);
        //    var questions = doc.Root?.Descendants("registration_questions").Descendants("question").ToList();
        //    var stateNode =
        //        questions?.FirstOrDefault(
        //            x =>
        //                x.Attribute("description")
        //                    .Value.ToString()
        //                    .ToLower()
        //                    .Equals("state", StringComparison.OrdinalIgnoreCase));
        //    var schoolNode =
        //        questions?.FirstOrDefault(
        //            x =>
        //                x.Attribute("description")
        //                    .Value.ToString()
        //                    .ToLower()
        //                    .Equals("school", StringComparison.OrdinalIgnoreCase));

        //    var stateQuestionId = stateNode?.Attribute("id")?.Value.ToString() ?? string.Empty;
        //    var schoolQuestionId = schoolNode?.Attribute("id")?.Value.ToString() ?? string.Empty;

        //    var userAnswers = doc.Root?.Descendants("user_list").Descendants("user").ToList();
        //    var userAnswer =
        //        userAnswers?.FirstOrDefault(
        //            x =>
        //                x.Attribute("login")
        //                    .Value.ToString()
        //                    .ToLower()
        //                    .Equals(userEmail, StringComparison.OrdinalIgnoreCase));
        //    var stateAnswer = userAnswer?.Attribute("registration_question_" + stateQuestionId)?.Value ?? String.Empty;
        //    var schoolAnswer = userAnswer?.Attribute("registration_question_" + schoolQuestionId)?.Value ?? String.Empty;
        //    var result = new Dictionary<string, string>() { { "state", stateAnswer }, { "school", schoolAnswer } };
        //    return result;
        //}

        public OperationResultDto SendEventQuizResultEmail(int[] quizResultIds)
        {
            var quizResults = QuizResultModel.GetAllByIds(quizResultIds.ToList());
            var mapping     = quizResults.FirstOrDefault()?.EventQuizMapping;

            if (mapping == null)
            {
                return(OperationResultDto.Error("There is no event for this result."));
            }
            //            var mapping = CompanyEventQuizMappingModel.GetOneById(quizResults.First().EventQuizMappingId).Value;

            var acDomain = CompanyAcServerModel.GetOneById(mapping.CompanyAcDomain.Id).Value;
            var acUrl    = acDomain.AcServer;
            var apiUrl   = new Uri(acUrl);

            var scoId     = mapping.AcEventScoId;
            var proxy     = new AdobeConnectProxy(new AdobeConnectProvider(new ConnectionDetails(apiUrl)), Logger, apiUrl);
            var eventInfo = proxy.GetEventInfo(scoId);

            if (!eventInfo.Success)
            {
                throw new InvalidOperationException();
            }

            var emailsNotSend = new List <string>();

            foreach (var quizResult in quizResults)
            {
                if (quizResult.Quiz.Id != mapping.PreQuiz.Id)
                {
                    throw new InvalidOperationException("Wrong quiz mapping");
                }
                if (string.IsNullOrEmpty(quizResult.ACEmail) && string.IsNullOrEmpty(quizResult.Email))
                {
                    Logger.Warn($"[SendEventQuizResultEmail] Email is empty. quizResultId={quizResult.Id}");
                    emailsNotSend.Add(quizResult.ParticipantName);
                    continue;
                }

                string email = null;
                try
                {
                    //todo: create model based on success/fail
                    var model = new EventQuizResultSuccessModel(Settings)
                    {
                        Name        = quizResult.ParticipantName,
                        EventName   = eventInfo.EventInfo?.Name ?? scoId,
                        MailSubject = "AC Event Post quiz result",
                        PostQuizUrl = Settings.CertificatesUrl + "/UI/#/?quizResultGuid=" + quizResult.Guid,
                        Date        = quizResult.EndTime
                                      //PostQuizUrl = "https://app.edugamecloud.com"
                    };

                    email = !string.IsNullOrEmpty(quizResult.ACEmail) ? quizResult.ACEmail : quizResult.Email;
                    bool sentSuccessfully = MailModel.SendEmailSync(quizResult.ParticipantName, email,
                                                                    Emails.GoddardPostQuizSubject,
                                                                    model, Common.AppEmailName, Common.AppEmail);
                    if (!sentSuccessfully)
                    {
                        emailsNotSend.Add(email);
                    }
                }
                catch (Exception e)
                {
                    Logger.Error($"[SendEventQuizResultEmail] error.", e);
                    emailsNotSend.Add(email);
                }
            }

            return(emailsNotSend.Any() ? OperationResultDto.Error("Not all emails were sent correctly") : OperationResultDto.Success());
        }
Exemple #12
0
        public OperationResultDto DeletePrincipals(int lmsCompanyId, string login, string password, string[] principalIds)
        {
            //http://dev.connectextensions.com/api/xml?action=principal-list&filter-principal-id=313091&filter-principal-id=256215&filter-principal-id=257331
            try
            {
                if (principalIds == null)
                {
                    throw new ArgumentNullException("principalIds");
                }

                LmsCompany         currentLicense         = this.LmsCompanyModel.GetOneById(lmsCompanyId).Value;
                IAdobeConnectProxy currentLicenseProvider = null;
                try
                {
                    currentLicenseProvider = AdobeConnectAccountService.GetProvider(currentLicense.AcServer, new UserCredentials(login, password), true);
                }
                catch (InvalidOperationException)
                {
                    return(OperationResultDto.Error("Login to Adobe Connect failed."));
                }
                PrincipalCollectionResult principalsToDelete = currentLicenseProvider.GetAllByPrincipalIds(principalIds);

                IEnumerable <LmsCompany> companyLicenses = this.LmsCompanyModel.GetAllByCompanyId(currentLicense.CompanyId);
                var lmsLicensePrincipals = new List <string>();
                foreach (LmsCompany lms in companyLicenses)
                {
                    if (lms.AcServer.TrimEnd(new char[] { '/' }) == currentLicense.AcServer.TrimEnd(new char[] { '/' }))
                    {
                        bool tryToDeleteAcUserFromLicense = principalsToDelete.Values.Select(x => x.Login).Contains(lms.AcUsername);
                        if (tryToDeleteAcUserFromLicense)
                        {
                            lmsLicensePrincipals.Add(string.Format("Adobe Connect account '{0}' is used within your LMS license '{1}'. ", lms.AcUsername, lms.Title));
                        }
                    }
                }

                if (lmsLicensePrincipals.Count > 0)
                {
                    string msg = (lmsLicensePrincipals.Count == 1)
                        ? "You should not delete account. "
                        : "You should not delete some accounts. ";
                    return(OperationResultDto.Error(msg + string.Join("", lmsLicensePrincipals)));
                }

                bool allOK            = true;
                var  failedPrincipals = new List <string>();

                foreach (string principalId in principalIds)
                {
                    PrincipalResult deleteResult = currentLicenseProvider.PrincipalDelete(new PrincipalDelete {
                        PrincipalId = principalId
                    });
                    if (deleteResult.Status.Code != StatusCodes.ok)
                    {
                        Logger.ErrorFormat("AC.PrincipalDelete error. {0} PrincipalId: {1}.",
                                           deleteResult.Status.GetErrorInfo(),
                                           principalId);
                        allOK = false;
                        failedPrincipals.Add(principalId);
                    }
                }

                if (allOK)
                {
                    return(OperationResultDto.Success());
                }
                else
                {
                    return(OperationResultDto.Error(string.Format("Failed to delete {0} principal(s) from Adobe Connect", failedPrincipals.Count.ToString())));
                }
            }
            catch (Exception ex)
            {
                Logger.Error("LmsService.DeletePrincipals", ex);
                return(OperationResultDto.Error(ErrorsTexts.UnexpectedError));
            }
        }
Exemple #13
0
        public async Task <OperationResultDto <List <int> > > ExtractInfo()
        {
            var result = new OperationResultDto <List <int> > {
                Result = new List <int>()
            };

            try
            {
                var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
                foreach (var item in Directory.GetFiles($@"{path}\Files"))
                {
                    using (var reader = new StreamReader(item))
                    {
                        var listaDatos          = new List <ContaminacionDto>();
                        var banderaObtenerDatos = false;

                        while (!reader.EndOfStream)
                        {
                            var line = reader.ReadLine();
                            if (line.Contains("Fecha,Hora"))
                            {
                                banderaObtenerDatos = true;
                                continue;
                            }
                            if (banderaObtenerDatos)
                            {
                                var values = line.Split(',');

                                var row = new ContaminacionDto
                                {
                                    FechaCorta = values[0].TryParseDatetime(),
                                    Hora       = values[1].TryParseInt(),
                                    Noroeste   = new List <ZonaDto>
                                    {
                                        new ZonaDto
                                        {
                                            Ozono            = values[2].TryParseInt(),
                                            DioxidoAzufre    = values[3].TryParseInt(),
                                            DioxidoNitrogeno = values[4].TryParseInt(),
                                            MonoxidoCarbono  = values[5].TryParseInt(),
                                            Pm10             = values[6].TryParseInt()
                                        }
                                    },
                                    Noreste = new List <ZonaDto>
                                    {
                                        new ZonaDto
                                        {
                                            Ozono            = values[7].TryParseInt(),
                                            DioxidoAzufre    = values[8].TryParseInt(),
                                            DioxidoNitrogeno = values[9].TryParseInt(),
                                            MonoxidoCarbono  = values[10].TryParseInt(),
                                            Pm10             = values[11].TryParseInt()
                                        }
                                    },
                                    Centro = new List <ZonaDto>
                                    {
                                        new ZonaDto
                                        {
                                            Ozono            = values[12].TryParseInt(),
                                            DioxidoAzufre    = values[13].TryParseInt(),
                                            DioxidoNitrogeno = values[14].TryParseInt(),
                                            MonoxidoCarbono  = values[15].TryParseInt(),
                                            Pm10             = values[16].TryParseInt()
                                        }
                                    },
                                    Suroeste = new List <ZonaDto>
                                    {
                                        new ZonaDto
                                        {
                                            Ozono            = values[17].TryParseInt(),
                                            DioxidoAzufre    = values[18].TryParseInt(),
                                            DioxidoNitrogeno = values[19].TryParseInt(),
                                            MonoxidoCarbono  = values[20].TryParseInt(),
                                            Pm10             = values[21].TryParseInt()
                                        }
                                    },
                                    Sureste = new List <ZonaDto>
                                    {
                                        new ZonaDto
                                        {
                                            Ozono            = values[22].TryParseInt(),
                                            DioxidoAzufre    = values[23].TryParseInt(),
                                            DioxidoNitrogeno = values[24].TryParseInt(),
                                            MonoxidoCarbono  = values[25].TryParseInt(),
                                            Pm10             = values[26].TryParseInt()
                                        }
                                    }
                                };

                                listaDatos.Add(row);
                            }
                        }

                        if (listaDatos.Any())
                        {
                            var response = await ContaminationDatabaseAccess.Save(listaDatos);

                            if (response.Success)
                            {
                                result.Result.Add(response.Result);
                            }
                            else
                            {
                                result.Error += response.Error;
                            }
                        }
                    }
                }

                result.Success = result.Result.Any();
            }
            catch (Exception ex)
            {
                result = new OperationResultDto <int> {
                    Error = ex.ErrorMessage()
                };
            }

            return(result);
        }
Exemple #14
0
        public async Task <OperationResultDto> SaveAll(QuizSummaryResultDTO quizResult)
        {
            if (quizResult == null)
            {
                Logger.Fatal("QuizResultService.SaveAll: ArgumentNullException for quizResult");
                throw new ArgumentNullException(nameof(quizResult));
            }

            if (quizResult.quizResults == null)
            {
                quizResult.quizResults = new QuizResultDTO[0];
            }

            Logger.Info($"QuizResultService.SaveAll Start: AcSessionId {quizResult.acSessionId}, quizId : {quizResult.quizId}, companyId : {quizResult.companyId}, Count : {quizResult.quizResults.Length}");

            IList <string> errorMessages = new List <string>();

            try
            {
                //TRICK to get eventQuizMappingId
                var eventQuizMappingId = GetEventQuizMappingId(quizResult);
                //

                Quiz      quiz      = QuizModel.GetOneById(quizResult.quizId).Value;
                ACSession acSession = ACSessionModel.GetOneById(quizResult.acSessionId).Value;
                if (acSession == null)
                {
                    throw new ArgumentException($"There are not session with acSessionId : {quizResult.acSessionId}");
                }
                int acSessionId = acSession.Id;

                CompanyEventQuizMapping companyEventQuizMapping = null;
                if (eventQuizMappingId.HasValue && eventQuizMappingId.Value != 0)
                {
                    companyEventQuizMapping = EventQuizMappingModel.GetOneById(eventQuizMappingId.Value).Value;
                }

                if (!IsValid(quizResult, out ValidationResult validationSummaryDtoResult))
                {
                    errorMessages = UpdateResultToShortString(validationSummaryDtoResult);
                    return(OperationResultDto.Error(string.Join(";", errorMessages)));
                }

                foreach (var appletResultDTO in quizResult.quizResults)
                {
                    appletResultDTO.acSessionId = quizResult.acSessionId;
                    if (IsValid(appletResultDTO, out ValidationResult validationResult))
                    {
                        var appletResult = ConvertDto(appletResultDTO, quiz, acSessionId, companyEventQuizMapping);
                        QuizResultModel.RegisterSave(appletResult);

                        if (appletResultDTO.results != null)
                        {
                            await SaveAllAsync(appletResult, appletResultDTO.results);
                        }
                    }
                    else
                    {
                        errorMessages.AddRange(UpdateResultToShortString(validationResult));
                    }
                }
            }
            catch (ArgumentException ex)
            {
                Logger.Error("QuizResultService.SaveAll:", ex);
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error($"QuizResultService.SaveAll json={JsonConvert.SerializeObject(quizResult)}", ex);

                throw;
            }

            return(errorMessages.Any()
                ? OperationResultDto.Error(string.Join(";", errorMessages))
                : OperationResultDto.Success());
        }