public AdminModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : base(sessionProvider, eventDispatcher, "/api/admin") { Post["/clients/create"] = parameters => { var createCommand = this.Bind<CreateClientCommand>(); RavenSession.Advanced.UseOptimisticConcurrency = true; var newClient = new Client { Name = createCommand.Name, }; RavenSession.Store(newClient); RavenSession.Store(new UniqueClientName { Id = createCommand.Name, }); UncommitedEvents.Add(new ClientCreated { Id = newClient.Id, Name = newClient.Name, }); return HttpStatusCode.Processing; }; Get["/clients/{clientId}"] = parameters => { var client = RavenSession.Load<Client>(string.Format("clients/{0}", parameters.clientId)); return Response.AsJson(new { client }); }; }
public ActualEventStore(IDispatchEvents eventsDispatcher, ISerializeEvent eventSerializer, UserCredentials credentials) { _eventsDispatcher = eventsDispatcher; _eventSerializer = eventSerializer; _connection = EventStoreConnection.Create(new IPEndPoint(IPAddress.Loopback, 1113)); _connection.ConnectAsync().GetAwaiter().GetResult(); _credentials = credentials; }
public AzureStreamDispatcher( IPullEventsForDispatching dispatching, IDispatchEvents events, IConfirmDispatchedEvents dispatched) { _dispatching = dispatching; _dispatched = dispatched; _events = events; }
protected RavenModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher, string modulePath) : base(modulePath) { _eventDispatcher = eventDispatcher; this.RequiresAuthentication(); this.RequiresAnyClaim(new[] { "SuperAdmin", "ClientAdmin", "ClientUser" }); Before += ctx => { ClientId = string.Format("clients/{0}", ctx.Parameters["id"]); UncommitedEvents = new List<EventBase>(); if (ctx.CurrentUser.Claims.Any(x => x == "ClientAdmin")) { var seerefineIdentity = ctx.CurrentUser as SeerefineIdentity; if (seerefineIdentity == null) return HttpStatusCode.Unauthorized; if (seerefineIdentity.ClientId != ClientId) return HttpStatusCode.Unauthorized; } RavenSession = sessionProvider.GetSession(); return null; }; After += ctx => { if (RavenSession != null) { if(RavenSession.Advanced.HasChanges) RavenSession.SaveChanges(); RavenSession.Dispose(); if (UncommitedEvents.Any()) _eventDispatcher.Dispatch(UncommitedEvents.ToArray()); } }; OnError += (ctx, ex) => { Trace.TraceError(ex.ToString()); if (ex is ConcurrencyException) { return Response.Conflict(ex.Message); } return HttpStatusCode.InternalServerError; }; }
public SiteModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : base(sessionProvider, eventDispatcher, "/api/client/{id}/site") { Get["/"] = parameters => { var sites = RavenSession.Query<Site>() .Where(x => x.ClientId == ClientId) .ToList(); return Response.AsJson(sites); }; }
public ProcessSchemaModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher, IProvideClientSettings clientSettings) : base(sessionProvider, eventDispatcher, "/process/clients/{id}/teams/{teamId}") { _clientSettings = clientSettings; string TeamId = ""; Before += ctx => { if (string.IsNullOrWhiteSpace(ctx.Parameters["teamId"]) == false) TeamId = string.Format("{0}/teams/{1}", ClientId, ctx.Parameters["teamId"]); return null; }; Get["/today"] = parameter => { var date = _clientSettings.Now(ClientId).ToString("yyyyMMdd"); var schemas = RavenSession.Query<ScheduleItem>() .Where(x => x.TeamId == TeamId && x.Date == date) .ToList(); var response = Response.AsJson(schemas); return response; }; Get["/{date}"] = parameter => { string date = parameter.date; var schemas = RavenSession.Query<ScheduleItem>() .Where(x => x.TeamId == TeamId && x.Date == date) .ToList(); var response = Response.AsJson(schemas); return response; }; Post["/dayreport"] = parameters => { var team = RavenSession.Load<Team>(TeamId); var members = RavenSession.Load<User>(team.Users); var @event = this.Bind<TeamDayReport>(); @event.TeamId = TeamId; @event.TeamName = team.Name; @event.Members = members.ToDictionary(user => user.Id, user => user.Name); @event.ServerTimestampUtc = DateTime.UtcNow; UncommitedEvents.Add(@event); return HttpStatusCode.NoContent; }; }
public ManageTeamsModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : base(sessionProvider, eventDispatcher, "/manage/clients/{id}/teams") { Get["/create"] = parameters => View["views/manage/_createTeam.html", new { ClientId }]; Get["/list"] = parameters => { var teams = RavenSession.Query<Team>() .Where(x => x.ClientId == ClientId) .ToList(); var viewModel = new { data = teams.Select(x => new {title = x.Id, content = x.Name}), }; return Response.AsJson(viewModel); }; Post["/create"] = parameters => { var createTeam = this.Bind<CreateTeamCommand>(); var team = new Team { ClientId = ClientId, Name = createTeam.Name, Users = createTeam.Users, }; RavenSession.Store(team); foreach (var user in RavenSession.Load<User>(createTeam.Users)) { user.TeamId = team.Id; user.TeamName = team.Name; } return HttpStatusCode.NoContent; }; }
public OrderListViewModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : base(sessionProvider, eventDispatcher, "/manage/clients/{id}/orders") { Get["/{date}"] = parameters => { string date = parameters.date; var orders = RavenSession.Query<OrderListView>() .Where(x => x.Date == date && x.ClientId == ClientId) .ToList(); return Response.AsJson(new { Date = date, Orders = orders.OrderBy(x => x.OrderName).ThenBy(x => x.SiteName).ToList(), }); /*return View["views/manage/OrderList.html", new { Date = date, Orders = orders.OrderBy(x => x.OrderName).ThenBy(x => x.SiteName).ToList(), }];*/ }; }
public SchemaUpdater(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher, IProvideClientSettings clientSettings) { _sessionProvider = sessionProvider; _eventDispatcher = eventDispatcher; _clientSettings = clientSettings; }
public ManageUsersModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : base(sessionProvider, eventDispatcher, "/manage/clients/{id}") { Get["/users/create"] = parameters => View["views/manage/_createUser.html", new {ClientId}]; Get["/users/list"] = parameters => { var users = RavenSession.Query<User>() .Where(x => x.ClientId == ClientId) .ToList(); var viewModel = new { data = users.Select(x => new {title = x.Id, content = x.Name}), }; return Response.AsJson(viewModel); }; Get["/users/wihtoutteam"] = parameters => { var users = RavenSession.Query<User>() .Where(x => x.ClientId == ClientId && x.TeamId == null); return Response.AsJson(users); }; Post["/users/create"] = parameters => { var command = this.Bind<CreateLoginCommand>(); if (command.AuthenticationKey == Guid.Empty) command.AuthenticationKey = Guid.NewGuid(); var login = new Login { AuthenticationKey = command.AuthenticationKey, ClientId = ClientId, Username = command.UserName, Password = command.Password, Roles = new List<Roles> {Roles.ClientUser}, }; RavenSession.Store(login); var user = new User { ClientId = ClientId, Name = Request.Form["Name"], LoginId = login.Id, }; RavenSession.Store(user); RavenSession.Store(new UserNameAndPasswordIsUnique { Id = command.ToUniqueString(), AuthenticationKey = command.AuthenticationKey, }); RavenSession.SaveChanges(); return HttpStatusCode.NoContent; }; }
protected RavenModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : this(sessionProvider, eventDispatcher, null) { }
public API(IDispatchRequests requests, IDispatchCommands commands, IDispatchEvents events) { _requests = requests; _commands = commands; _events = events; }
public ManageModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : base(sessionProvider, eventDispatcher, "/manage/clients/{id}") { Get["/"] = parameters => View["views/manage/Index.html", new { ClientId }]; }
public ManageSitesInfoSectionsModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : base(sessionProvider, eventDispatcher, "/manage/clients/{id}/sites/{siteId}/infosections") { Before += ctx => { if (string.IsNullOrEmpty(ctx.Parameters["siteId"]) == false) SiteId = ClientId + "/" + string.Format("sites/{0}", ctx.Parameters["siteId"]); if(string.IsNullOrWhiteSpace(ctx.Parameters.sectionId) == false) SectionId = string.Format("{1}/infosections/{0}", ctx.Parameters.sectionId, SiteId); return null; }; Get["/list"] = parameters => { var query = RavenSession.Query<SiteInfoSection>() .Where(x => x.SiteId == SiteId); string grouping = Request.Query.Grouping; if (string.IsNullOrWhiteSpace(grouping) == false) query = query.Where(x => x.Grouping == grouping); var sections = query.ToList(); var viewModel = new { siteInfo = sections.Select(x => new { title = x.Heading, content = x.Content, grouping = x.Grouping, id = x.Id, }).ToArray(), }; return Response.AsJson(viewModel); }; Get["/create"] = parameters => View["views/manage/_createInfoSection.html", new {ClientId, SiteId}]; Delete["/{sectionId}"] = parameters => { var section = RavenSession.Load<SiteInfoSection>(SectionId); RavenSession.Delete(section); UncommitedEvents.Add(new SiteSectionRemoved { SiteId = section.SiteId, SiteName = section.SiteName, SectionId = section.Id, SectionName = section.Heading, Grouping = section.Grouping, }); return HttpStatusCode.NoContent; }; Put["/{sectionId}"] = parameters => { var command = this.Bind<EditInfoSectionCommand>(); var section = RavenSession.Load<SiteInfoSection>(SectionId); section.Heading = command.Title; section.Content = command.Content; section.Grouping = command.Grouping; UncommitedEvents.Add(new SiteSectionChanged { SectionId = section.Id, SiteId = section.SiteId, Heading = command.Title, Content = command.Content, Grouping = command.Grouping, }); return HttpStatusCode.NoContent; }; Post["/create"] = parameters => { var command = this.Bind<CreateInfoSectionCommand>(); var site = RavenSession.Load<Site>(SiteId); var section = new SiteInfoSection { ClientId = ClientId, SiteId = SiteId, SiteName = site.Name, Heading = command.Title, Content = command.Content, Grouping = command.Grouping, }; RavenSession.Store(section); UncommitedEvents.Add(new SiteSectionCreated { SiteId = SiteId, SectionId = section.Id, Heading = section.Heading, Content = section.Content, Grouping = section.Grouping, }); return HttpStatusCode.NoContent; }; }
public ManageSitesInfoSectionsDetailsModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : base(sessionProvider, eventDispatcher, "/manage/clients/{id}/sites/{siteId}/infosections/{sectionId}/details") { Before += ctx => { if (string.IsNullOrWhiteSpace(ctx.Parameters["sectionId"]) == false) SectionId = ClientId + string.Format("/sites/{0}/infosections/{1}", ctx.Parameters["siteId"], ctx.Parameters["sectionId"]); if(string.IsNullOrWhiteSpace(ctx.Parameters["sectionDetailId"]) == false) SectionDetailId = string.Format("{0}/details/{1}", SectionId, ctx.Parameters.sectionDetailId); return null; }; Delete["/{sectionDetailId}"] = parameters => { var sectionDetail = RavenSession.Load<SectionDetail>(SectionDetailId); RavenSession.Delete(sectionDetail); return HttpStatusCode.NoContent; }; Put["/{sectionDetailId}"] = parameters => { var command = this.Bind<UpdateSectionDetailCommand>(); var detail = RavenSession.Load<SectionDetail>(SectionDetailId); detail.ItemIdentity = command.ItemId; detail.ItemName = command.ItemName; detail.Comments = command.Comments; detail.VerificationQuestion = command.Reminders == null ? "" : string.Join(",", command.Reminders); if (string.IsNullOrWhiteSpace(command.Grouping) == false) detail.Grouping = command.Grouping; UncommitedEvents.Add(new SectionDetailUpdated { SiteId = detail.SiteId, SectionId = detail.SectionId, SectionName = detail.SectionName, SectionDetailId = detail.Id, Grouping = detail.Grouping, ItemIdentity = detail.ItemIdentity, ItemName = detail.ItemName, VerificationQuestion = detail.VerificationQuestion, Comments = detail.Comments, }); return HttpStatusCode.NoContent; }; Post["/create"] = parameters => { var command = this.Bind<CreateSectionDetailCommand>(); var section = RavenSession.Load<SiteInfoSection>(SectionId); var detail = new SectionDetail { ClientId = section.ClientId, SiteId = section.SiteId, SectionId = section.Id, SectionName = section.Heading, Grouping = command.Grouping, ItemIdentity = command.ItemId, ItemName = command.ItemName, Comments = command.Comments, VerificationQuestion = command.Reminders == null ? "" : string.Join(",", command.Reminders), }; RavenSession.Store(detail); UncommitedEvents.Add(new SectionDetailCreated { SiteId = detail.SiteId, SectionId = detail.SectionId, SectionName = detail.SectionName, SectionDetailId = detail.Id, Grouping = detail.Grouping, ItemIdentity = detail.ItemIdentity, ItemName = detail.ItemName, VerificationQuestion = detail.VerificationQuestion, Comments = detail.Comments, }); return HttpStatusCode.NoContent; }; Get["/list"] = parameters => { var details = RavenSession.Query<SectionDetail>() .Where(x => x.SectionId == SectionId) .ToList(); details.ForEach(x => { if (string.IsNullOrWhiteSpace(x.Grouping)) x.Grouping = "Fake Zone"; }); var section = RavenSession.Load<SiteInfoSection>(SectionId); var groupedDetailes = (from detail in details group detail by detail.Grouping into groupedDetails select new { grouping = groupedDetails.Key, title = section.Heading, items = groupedDetails.Select(x => new { id = x.Id, itemId = x.ItemIdentity, itemName = x.ItemName, verificationQuestions = x.VerificationQuestion.SplitToArray(","), comments = x.Comments, }).ToList(), }).ToList(); var viewModel = new { siteInfo = groupedDetailes, }; return Response.AsJson(viewModel); }; }
public ProcessScheduleItemModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : base(sessionProvider, eventDispatcher, "process/clients/{id}/scheduleItems/{scheduleItemId}") { string ScheduleItemId = ""; Before += ctx => { if (string.IsNullOrWhiteSpace(ctx.Parameters["scheduleItemId"]) == false) ScheduleItemId = string.Format("{0}/scheduleItems/{1}", ClientId, ctx.Parameters["scheduleItemId"]); return null; }; Post["/checkin"] = parameters => { var scheduleItem = RavenSession.Load<ScheduleItem>(ScheduleItemId); var @event = this.Bind<ScheduleItemCheckedIn>(); @event.ScheduleItemId = ScheduleItemId; @event.UtcCheckInTime = DateTime.UtcNow; @event.TeamId = scheduleItem.TeamId; @event.TeamName = scheduleItem.TeamName; eventDispatcher.Dispatch(@event); return HttpStatusCode.NoContent; }; Post["/checkout"] = parameters => { var scheduledItem = RavenSession.Load<ScheduleItem>(ScheduleItemId); var @event = this.Bind<ScheduleItemCheckedOut>(); @event.ScheduleItemId = ScheduleItemId; @event.UtcCheckOutTime = DateTime.UtcNow; @event.TeamId = scheduledItem.TeamId; @event.TeamName = scheduledItem.TeamName; @event.SiteId = scheduledItem.SiteId; @event.SiteName = scheduledItem.SiteName; eventDispatcher.Dispatch(@event); return HttpStatusCode.NoContent; }; Post["/tickdetail"] = parameters => { var @event = this.Bind<TickDetail>(); @event.ScheduleItemId = ScheduleItemId; @event.UtcTickTime = DateTime.UtcNow; eventDispatcher.Dispatch(@event); return HttpStatusCode.NoContent; }; Post["/report"] = parameters => { var @event = this.Bind<ScheduleItemReport>(); @event.ScheduleItemId = ScheduleItemId; @event.UtcReportTime = DateTime.UtcNow; var scheduleItem = RavenSession.Load<ScheduleItem>(ScheduleItemId); if (scheduleItem != null) { @event.ClientId = scheduleItem.ClientId; var team = RavenSession.Load<Team>(scheduleItem.TeamId); if (team != null) { @event.TeamId = team.Id; @event.TeamName = team.Name; var teamMembers = RavenSession.Load<User>(team.Users); if (teamMembers != null) @event.TeamMembers = teamMembers.Select(x => DomainReference<User>.Create(x.Id, x.Name)); } } eventDispatcher.Dispatch(@event); return HttpStatusCode.NoContent; }; Post["/orderItem"] = paramaters => { System.Diagnostics.Debug.WriteLine(new StreamReader(Request.Body).ReadToEnd()); var @event = this.Bind<DetailOrderAdded>(); @event.ScheduleItemId = ScheduleItemId; @event.UtcDetaliNotesTime = DateTime.UtcNow; eventDispatcher.Dispatch(@event); return HttpStatusCode.NoContent; }; Post["/detailnotes"] = paramaters => { var @event = this.Bind<DetailNotesAdded>(); @event.ScheduleItemId = ScheduleItemId; @event.UtcDetaliNotesTime = DateTime.UtcNow; eventDispatcher.Dispatch(@event); return HttpStatusCode.NoContent; }; }
public DailyReportsModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : base(sessionProvider, eventDispatcher, "/manage/clients/{id}/teams/{teamId}") { string TeamId = ""; Before += ctx => { TeamId = string.Format("{0}/teams/{1}", ClientId, ctx.Parameters["teamId"]); return null; }; Get["/day/{date}"] = parameters => { string date = parameters.date; var teamDailyReportViewModel = RavenSession.Query<TeamDailyReportViewModel>() .FirstOrDefault(x => x.Date == date && x.Team.Id == TeamId); return Response.AsJson(teamDailyReportViewModel); }; Get["/day/{date}/todo"] = parameters => { string date = parameters.date; var scheduleItems = RavenSession.Query<ScheduleItem>() .Where(x => x.Date == date && x.TeamId == TeamId) .ToList(); var viewModel = new TodoViewModel(); foreach (var scheduleItem in scheduleItems) { viewModel.Team = DomainReference<Team>.Create(scheduleItem.TeamId, scheduleItem.TeamName); viewModel.Date = scheduleItem.Date; var todo = new TodoViewModel.TodoSiteViewModel { Site = DomainReference<Site>.Create(scheduleItem.SiteId, scheduleItem.SiteName), VisitStart = TimeOfDay.Create(scheduleItem.VisitStart), VisitEnd = TimeOfDay.Create(scheduleItem.VisitEnd), }; var sections = scheduleItem.Sections.Where(x => x.Grouping == "sections").ToList(); foreach (var sectionHeader in sections) { if(sectionHeader.Items == null) continue; foreach (var overviewSection in sectionHeader.Items) { if(overviewSection.Details == null) continue; foreach (var detailHeader in overviewSection.Details) { if(detailHeader.Items == null) continue; foreach (var detail in detailHeader.Items) { todo.Tasks.AddRange(detail.VerificationQuestions); } } } } viewModel.Sites.Add(todo); } return Response.AsJson(viewModel); }; }
public ManageSitesModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher, IProvideClientSettings clientSettings) : base(sessionProvider, eventDispatcher, "/manage/clients/{id}/sites") { _clientSettings = clientSettings; Before += ctx => { if (string.IsNullOrEmpty(ctx.Parameters["siteId"]) == false) SiteId = string.Format("{1}/sites/{0}", ctx.Parameters["siteId"], ClientId); return null; }; Get["/autoCompleteList"] = parameters => { var sites = RavenSession.Query<Site>() .Where(x => x.ClientId == ClientId) .ToList(); var viewModel = new { data = sites.OrderBy(x => x.Name).Select(x => new { value = x.Id, label = x.Name, }).ToList(), }; return Response.AsJson(viewModel); }; Get["/list"] = parameters => { int startIndex = Request.Query.skip.HasValue ? Request.Query.skip : 0; int size = Request.Query.take.HasValue ? Request.Query.take : 20; RavenQueryStatistics stats; var sites = RavenSession.Query<Site>() .Statistics(out stats) .Where(x => x.ClientId == ClientId) .OrderBy(x => x.Name) .Skip(startIndex) .Take(size) .ToList(); var viewModel = new { data = sites.OrderBy(x => x.Name).Select(x => new {x.Id, title = x.Id, content = x.Name, heading = ""}), totalCount = stats.TotalResults, }; return Response.AsJson(viewModel); }; Get["/{siteId}"] = parameters => { var site = RavenSession.Load<Site>(SiteId); var viewModel = new { site = new { siteId = site.Id, name = site.Name, address = site.Address, postCode = site.PostCode, city = site.City, country = site.Country, description = site.Description, content = site.Content, url = site.Url, estimatedMinutesToService = site.EstimatedMinutesToService, minuteToServiceFactor = site.MinuteToServiceFactor, } }; return Response.AsJson(viewModel); }; Get["/{siteId}/edit"] = parameters => View["views/manage/_editSite.html", new {ClientId}]; Put["/{siteId}"] = parameters => { var site = RavenSession.Load<Site>(SiteId); var serviceUnitsChanged = new ServiceUnitsChanged { EstimatedMinutesToService = site.EstimatedMinutesToService, MinuteToServiceFactor = site.MinuteToServiceFactor, ClientId = ClientId, Site = DomainReference<Site>.Create(site.Id, site.Name), }; this.BindTo(site, "Id"); UncommitedEvents.Add(new SiteUpdated { ClientId = ClientId, SiteId = SiteId, Name = site.Name, Description = site.Description, Address = site.Address, PostCode = site.PostCode, City = site.City, Content = site.Content, Country = site.Country, EndTime = site.EndTime, StartTime = site.StartTime, Latitude = site.Latitude, Longitude = site.Longitude, }); if (serviceUnitsChanged.AreEqual(site) == false) { serviceUnitsChanged.MinuteToServiceFactor = site.MinuteToServiceFactor; serviceUnitsChanged.EstimatedMinutesToService = site.EstimatedMinutesToService; UncommitedEvents.Add(serviceUnitsChanged); } return HttpStatusCode.Created; }; Get["/create"] = parameters => View["views/manage/_createSite.html", new {ClientId}]; Post["/create"] = parameters => { var site = new Site { ClientId = ClientId, Name = Request.Form["Name"], Description = Request.Form["Description"], }; var defaultServiceUnits = _clientSettings.DefaultServiceUnits(ClientId); site.EstimatedMinutesToService = defaultServiceUnits.EstimatedMinutesToService; site.MinuteToServiceFactor = defaultServiceUnits.MinuteToServiceFactor; RavenSession.Store(site); UncommitedEvents.Add(new SiteCreated { SiteId = site.Id, Name = site.Name, Description = site.Description, }); return HttpStatusCode.NoContent; }; }
public AdminSchedulesModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher) : base(sessionProvider, eventDispatcher, "/manage/clients/{id}/scheduleItems") { Put["/{scheduleItemId}/move"] = parameters => { string ScheduleItemId = string.Format("{0}/scheduleItems/{1}", ClientId, parameters.scheduleItemId); var scheduleItem = RavenSession.Load<ScheduleItem>(ScheduleItemId); var command = this.Bind<MoveScheduleItemCommand>(); scheduleItem.VisitStart = command.VisitStart; scheduleItem.VisitEnd = command.VisitEnd; scheduleItem.Date = command.Date; UncommitedEvents.Add(new ScheduleItemMoved { ScheduleItemId = scheduleItem.Id, Date = scheduleItem.Date, TeamId = scheduleItem.TeamId, TeamName = scheduleItem.TeamName, SiteId = scheduleItem.SiteId, SiteName = scheduleItem.SiteName, VisitStart = scheduleItem.VisitStart, VisitEnd = scheduleItem.VisitEnd, }); return HttpStatusCode.NoContent; }; Delete["/{scheduleItemId}"] = parameters => { string ScheduleItemId = string.Format("{0}/scheduleItems/{1}", ClientId, parameters.scheduleItemId); var scheduleItem = RavenSession.Load<ScheduleItem>(ScheduleItemId); UncommitedEvents.Add(new ScheduleItemDeleted { ScheduleItemId = scheduleItem.Id, Date = scheduleItem.Date, TeamId = scheduleItem.TeamId, TeamName = scheduleItem.TeamName, SiteId = scheduleItem.SiteId, SiteName = scheduleItem.SiteName, }); RavenSession.Delete(scheduleItem); return HttpStatusCode.NoContent; }; Post["/create"] = paramaters => { var command = this.Bind<CreateScheduleItemCommand>(); var team = RavenSession.Load<Team>(command.TeamId); if (team == null) return Response.ReferenceMissing(string.Format("Team with Id '{0}' not found.", command.TeamId)); var site = RavenSession.Load<Site>(command.SiteId); if (site == null) return Response.ReferenceMissing(string.Format("Site with Id '{0}' not found.", command.SiteId)); var scheduleItem = new ScheduleItem { ClientId = ClientId, TeamId = command.TeamId, TeamName = team.Name, SiteId = command.SiteId, SiteName = site.Name, Date = command.Date, VisitStart = command.VisitStart, VisitEnd = command.VisitEnd, SiteAddress = site.Address, SiteCity = site.City, SiteDescription = site.Description, SitePostCode = site.PostCode, SiteLatitude = site.Latitude, SiteLongitude = site.Longitude, SiteLocationUrl = site.Url, }; var sections = RavenSession.Query<SiteInfoSection>() .Where(x => x.SiteId == site.Id) .ToList(); foreach (var section in sections) { scheduleItem.AddSection(section.Grouping, section.Id, section.Heading, section.Content, site.Id); } var sectionDetails = RavenSession.Query<SectionDetail>() .Where(x => x.SiteId == site.Id) .ToList(); foreach (var detail in sectionDetails) { scheduleItem.AddSectionDetail(detail.SectionId, detail.Grouping, detail.Id, detail.ItemName, detail.ItemIdentity, detail.VerificationQuestion, detail.Comments); } RavenSession.Store(scheduleItem); UncommitedEvents.Add(new ScheduleItemCreated { ScheduledItemId = scheduleItem.Id, ClientId = scheduleItem.ClientId, TeamId = scheduleItem.TeamId, TeamName = scheduleItem.TeamName, SiteLatitude = scheduleItem.SiteLatitude, SiteLongitude = scheduleItem.SiteLongitude, SiteId = scheduleItem.SiteId, SiteName = scheduleItem.SiteName, StartTime = scheduleItem.VisitStart, EndTime = scheduleItem.VisitEnd, Date = scheduleItem.Date, }); return HttpStatusCode.NoContent; }; Get[@"/{year}/{month}/{day}"] = parameters => { var teams = RavenSession.Query<Team>() .Customize(x => x.Include<Team>(o => o.Users)) .Where(x => x.ClientId == ClientId) .ToArray(); string date = string.Format("{0}{1:00}{2:00}", (int)parameters.year, (int)parameters.month, (int)parameters.day); var schedules = RavenSession.Query<ScheduleItem>() .Where(x => x.ClientId == ClientId && x.Date == date) .ToList(); var viewModel = new { schedules = teams.ToArray().Select(x => new { clientId = x.ClientId, teamId = x.Id, team = x.Name, teamMembers = string.Join(", ", x.Users.Select(u => RavenSession.Load<User>(u).Name)), status = "onTime", statusDetail = "", date, tasks = schedules.Where(z => z.TeamId == x.Id & z.Date == date) .Select(o => new { scheduleId = o.Id, siteId = o.SiteId, name = o.SiteName, status = "open", visitStart = (o.VisitStart.Length == 4) ? "0" + o.VisitStart : o.VisitStart, visitEnd = (o.VisitEnd.Length == 4) ? "0" + o.VisitEnd : o.VisitEnd, }), }), }; return Response.AsJson(viewModel); }; Get[@"/{year}/{month}/{day}/liveroute"] = parameters => { string date = string.Format("{0}{1:00}{2:00}", (int)parameters.year, (int)parameters.month, (int)parameters.day); var routes = RavenSession.Query<DaylyRoute>() .Where(x => x.Date == date && x.ClientId == ClientId) .ToList(); var viewModel = new { Route = routes, }; return viewModel; }; }
public ActualEventStore(IDispatchEvents eventsDispatcher) { _eventsDispatcher = eventsDispatcher; _connection = EventStore.ClientAPI.EventStoreConnection.Create(new IPEndPoint(IPAddress.Loopback, 1113)); _connection.ConnectAsync().GetAwaiter().GetResult(); }
public InMemoryEventStore(IDispatchEvents eventsDispatcher) { _eventsDispatcher = eventsDispatcher; store = new Dictionary <int, EventStream>(); }