コード例 #1
0
        public ISignInResponse SignIn(SignInDto signInDto)
        {
            var user = ValidateSignIn(signInDto);

            user.LastLoginOn   = _systemClock.GetCurrentTime();
            user.LastUpdatedOn = _systemClock.GetCurrentTime();

            var token = JwtHelper.GenerateJSONWebToken(_config, user);

            user.Token = Hash.Create(token, user.Salt);

            _repository.User.Update(user);
            _repository.Save();

            var response = new SignInResponse
            {
                Id            = user.Id,
                Token         = token,
                CreationOn    = user.CreationOn,
                LastLoginOn   = user.LastLoginOn,
                LastUpdatedOn = user.LastUpdatedOn
            };

            return(response);
        }
コード例 #2
0
        public async Task Index(int id)
        {
            async Task <string[]> GetTimesAsync()
            {
                var times = new string[6];

                for (int index = 0; index < 3; index++)
                {
                    times[index] = $"Local: {_clock.GetCurrentTime(DateTimeKind.Local)}";
                    await Task.Delay(1000);
                }

                for (int index = 3; index < 6; index++)
                {
                    times[index] = $"UTC: {_clock.GetCurrentTime(DateTimeKind.Utc)}";
                    await Task.Delay(1000);
                }
                return(times);
            }

            var currentTimes = await GetTimesAsync();

            var list = string.Join("", currentTimes.Select(x => $"<li>{x}</li>"));

            Response.ContentType = "text/html";
            await Response.WriteAsync(
                $@"<html><body>
                         <ul>
                         {list}
                         </ul>
                         </body>
                         </html>"

                );
        }
コード例 #3
0
        public void Process(InvalidReportFromUnknownDataCollectorReceived @event)
        {
            var invalidCaseReport = new InvalidCaseReportFromUnknownDataCollector(@event.CaseReportId);

            invalidCaseReport.PhoneNumber         = @event.Origin;
            invalidCaseReport.Message             = @event.Message;
            invalidCaseReport.ParsingErrorMessage = @event.ErrorMessages;
            invalidCaseReport.Timestamp           = _systemClock.GetCurrentTime();
            _invalidCaseReportsFromUnknownDataCollectors.Save(invalidCaseReport);
        }
コード例 #4
0
        /// <inheritdoc/>
        public IEventProcessingResult Process(IEventEnvelope envelope, IEvent @event)
        {
            var status   = EventProcessingStatus.Success;
            var start    = _systemClock.GetCurrentTime();
            var messages = new EventProcessingMessage[0];

            try
            {
                var processor = _container.Get(_methodInfo.DeclaringType);
                _methodInfo.Invoke(processor, new[] { @event });
            } catch (Exception ex)
            {
                status   = EventProcessingStatus.Failed;
                messages = new[] {
                    new EventProcessingMessage(EventProcessingMessageSeverity.Error, ex.Message, ex.StackTrace.Split(Environment.NewLine.ToCharArray()))
                };
            }
            var end = _systemClock.GetCurrentTime();

            return(new EventProcessingResult(envelope.CorrelationId, this, status, start, end, messages));
        }
コード例 #5
0
        public void Handle(RegisterNewAdminUser command)
        {
            var user = _repository.Get(command.Role.StaffUserId);

            user.RegisterNewAdminUser(command.Role.FullName, command.Role.DisplayName,
                                      command.Role.Email, _systemClock.GetCurrentTime());
        }
コード例 #6
0
        void SetState(IEventProcessor eventProcessor, IEventEnvelope envelope, EventProcessingStatus processingStatus)
        {
            dynamic state = new ExpandoObject();

            state.EventProcessor = eventProcessor.Identifier;
            state.LastProcessedSequenceNumber             = envelope.SequenceNumber;
            state.LastProcessedSequenceNumberForEventType = envelope.SequenceNumberForEventType;
            state.LastProcessed        = _systemClock.GetCurrentTime();
            state.LastProcessingStatus = processingStatus;

            var json = _serializer.ToJson(state);

            _database.StringSet(GetKeyFor(eventProcessor), json);
        }
コード例 #7
0
        public void Process(CaseReportFromUnknownDataCollectorReceived @event)
        {
            var caseReport = new CaseReportFromUnknownDataCollector(@event.CaseReportId);

            caseReport.Origin                = @event.Origin;
            caseReport.HealthRiskId          = @event.HealthRiskId;
            caseReport.NumberOfFemalesUnder5 = @event.Age <= 5 && (Sex)@event.Sex == Sex.Female ? 1 : 0;
            caseReport.NumberOfFemalesOver5  = @event.Age > 5 && (Sex)@event.Sex == Sex.Female ? 1 : 0;
            caseReport.NumberOfMalesUnder5   = @event.Age <= 5 && (Sex)@event.Sex == Sex.Male ? 1 : 0;
            caseReport.NumberOfMalesOver5    = @event.Age > 5 && (Sex)@event.Sex == Sex.Male ? 1 : 0;
            caseReport.Timestamp             = _systemClock.GetCurrentTime();
            caseReport.Location              = new Location(@event.Latitude, @event.Longitude);
            _caseReportsFromUnknownDataCollectors.Save(caseReport);
        }
コード例 #8
0
        void WriteState(IEventProcessor eventProcessor, IEventEnvelope envelope, EventProcessingStatus processingStatus)
        {
            dynamic state = new ExpandoObject();

            state.EventProcessor = eventProcessor.Identifier;
            state.LastProcessedSequenceNumber             = envelope.SequenceNumber;
            state.LastProcessedSequenceNumberForEventType = envelope.SequenceNumberForEventType;
            state.LastProcessed        = _systemClock.GetCurrentTime();
            state.LastProcessingStatus = processingStatus;

            var json     = _serializer.ToJson(state);
            var fileName = GetFileNameFor(eventProcessor);

            _files.WriteString(_configuration.Path, fileName, json);
        }
コード例 #9
0
        void WriteState(IEventProcessor eventProcessor, IEventEnvelope envelope, EventProcessingStatus processingStatus)
        {
            dynamic state = new ExpandoObject();

            state.EventProcessor = eventProcessor.Identifier;
            state.LastProcessedSequenceNumber             = envelope.SequenceNumber;
            state.LastProcessedSequenceNumberForEventType = envelope.SequenceNumberForEventType;
            state.LastProcessed        = _systemClock.GetCurrentTime();
            state.LastProcessingStatus = processingStatus;

            var json = _serializer.ToJson(state);
            var path = GetPathFor(eventProcessor);

            File.WriteAllText(path, json);
        }
コード例 #10
0
        public async Task Index(string kind = "local")
        {
            DateTimeKind dateTimeKind = string.Compare(kind, "utc", true) == 0
                ? DateTimeKind.Utc
                : DateTimeKind.Local;

            Response.ContentType = "text/html";
            await Response.WriteAsync("<html><body><ul>");

            for (int i = 0; i < 2; i++)
            {
                await Response.WriteAsync($"<li>{_clock.GetCurrentTime(dateTimeKind)}</li>");

                await Task.Delay(1000);
            }
            await Response.WriteAsync("</ul><body></html>");
        }
コード例 #11
0
ファイル: HeadsService.cs プロジェクト: HammerAlf/Runtime
        /// <inheritdoc/>
        public override Task Connect(HeadInfo request, IServerStreamWriter <Empty> responseStream, ServerCallContext context)
        {
            var   headId = request.HeadId.To <HeadId>();
            Timer timer  = null;

            try
            {
                _logger.Information($"Head connected '{headId}'");
                if (request.ServicesByName.Count == 0)
                {
                    _logger.Information("Not providing any head services");
                }
                else
                {
                    request.ServicesByName.ForEach(_ => _logger.Information($"Providing service {_}"));
                }

                var connectionTime = _systemClock.GetCurrentTime();
                var client         = new Head(
                    headId,
                    request.Host,
                    request.Port,
                    request.Runtime,
                    request.ServicesByName,
                    connectionTime);

                _connectedHeads.Connect(client);

                timer = new Timer(1000)
                {
                    Enabled = true
                };
                timer.Elapsed += (s, e) => responseStream.WriteAsync(new Empty());

                context.CancellationToken.ThrowIfCancellationRequested();
                context.CancellationToken.WaitHandle.WaitOne();
            }
            finally
            {
                _connectedHeads.Disconnect(headId);
                timer?.Dispose();
            }

            return(Task.CompletedTask);
        }
コード例 #12
0
ファイル: EventEnvelopes.cs プロジェクト: zamil2200/Bifrost
        /// <inheritdoc/>
        public IEventEnvelope CreateFrom(IEventSource eventSource, IEvent @event, EventSourceVersion version)
        {
            var envelope = new EventEnvelope(
                TransactionCorrelationId.NotSet,
                Guid.NewGuid(),
                EventSequenceNumber.Zero,
                EventSequenceNumber.Zero,
                _eventMigrationHierarchyManager.GetCurrentGenerationFor(@event.GetType()),
                _applicationResources.Identify(@event),
                eventSource.EventSourceId,
                _applicationResources.Identify(eventSource),
                version,
                _executionContext.Principal.Identity.Name,
                _systemClock.GetCurrentTime()
                );

            return(envelope);
        }
コード例 #13
0
        public int ApplyInterest(int accountId, double rate, DateTime latestInterestDate)
        {
            Account account = accountQueriesHandler.GetAccount(accountId);

            rate /= 100;
            DateTime currentDate = systemClock.GetCurrentTime();
            double   days        = (currentDate - latestInterestDate).TotalDays;
            decimal  amount      = (decimal)((double)account.Balance * rate / 365 * days);

            amount           = Decimal.Round(amount, 2);
            account.Balance += amount;

            context.Update(account);
            context.SaveChanges();

            transactionCommandsHandler.CreateTransaction(accountId, amount, account.Balance, "Interest", "Credit");

            return(1);
        }
コード例 #14
0
ファイル: UserService.cs プロジェクト: g0nP/GenesisChallenge
        private void ValidateUser(IUser user, string token)
        {
            if (user == null)
            {
                throw new KeyNotFoundException("User doesn't exists");
            }

            if (token == null)
            {
                throw new UnauthorizedAccessException("Unauthorized");
            }

            if (!Hash.Validate(token, user.Salt, user.Token))
            {
                throw new UnauthorizedAccessException("Unauthorized");
            }

            if (user.LastLoginOn <= _systemClock.GetCurrentTime().AddMinutes(-30))
            {
                throw new UnauthorizedAccessException("Invalid Session");
            }
        }
コード例 #15
0
        UncommittedEventStream BuildUncommitted(UncommittedEvents uncommittedEvents, CorrelationId correlationId)
        {
            var versionedEventSource = ToVersionedEventSource(uncommittedEvents);

            return(BuildFrom(versionedEventSource, correlationId, _systemClock.GetCurrentTime(), uncommittedEvents.Events));
        }