public async void CreateAnnouncement( EStatusCode expectedStatus, CreateAnnouncement mutation, bool?withVehicle = false ) { if (withVehicle.Value) { EntitiesFactory.NewVehicle(id: mutation.VehicleId).Save(); } var result = await MutationsHandler.Handle(mutation); Assert.Equal(expectedStatus, result.Status); if (expectedStatus == EStatusCode.Success) { var announcementDb = await MutationsDbContext.Announcements .Where(a => a.Id == mutation.Id) .FirstOrDefaultAsync(); Assert.NotNull(announcementDb); Assert.Equal(mutation.PricePurchase, announcementDb.PricePurchase); Assert.Equal(mutation.PriceSale, announcementDb.PriceSale); Assert.Equal(mutation.VehicleId, announcementDb.Vehicle.Id); Assert.Null(announcementDb.DateSale); } }
public HttpResponseMessage Post([FromBody] AnnouncementModel model) { var createAnnouncementAction = new CreateAnnouncement(model.ToEntity()); var result = PerformAction <CreateAnnouncement, Announcement>(createAnnouncementAction); return(Request.CreateResponse(result.ValidationResult.GetStatusCode(HttpStatusCode.Created), new ActionReponse <AnnouncementConfirmationModel>(new AnnouncementConfirmationModel(createAnnouncementAction.NumberOfUsersEmailed), result.ValidationResult))); }
void PropagateToCo(CreateAnnouncement request) { var client = new RestClient(request.Cooperator); var requestToSend = new RestRequest($"topics/{request.TopicName}/announcements", Method.POST); requestToSend.AddParameter("Content", request.Content); requestToSend.AddParameter("CreationTime", request.CreationTime); client.Execute(requestToSend); }
void Create(IDbConnection connection, CreateAnnouncement request) { var announcement = new Announcement { Content = request.Content, CreationTime = request.CreationTime.HasValue ? DateTime.FromBinary(request.CreationTime.Value) : DateTime.UtcNow }; connection.Insert(announcement); if (!string.IsNullOrEmpty(request.Cooperator)) { request.CreationTime = announcement.CreationTime.ToBinary(); Propagators.ScheduleTopicOperation(request.TopicName, () => PropagateToCo(request)); } }
public void Create(CreateAnnouncement request) { var topicLock = Locks.TakeTopicLock(request.TopicName); lock (topicLock) { if (Locks.TopicsRecoveryLocks.ContainsKey(request.TopicName)) { throw new Exception($"Topic {request.TopicName} is inconsistent"); } using (var connection = Connections.ConnectToInitializedTopic(request.TopicName)) { Create(connection, request); Monitor.PulseAll(topicLock); } } }
public async Task <ActionResult <MutationResult> > CreateAsync([FromBody] CreateAnnouncement mutation) { return(GetResult(await _mutationsHanlder.Handle(mutation))); }