public async Task <IDocument> CreateAgentProfile(Agent agent, string profileId, byte[] content, string contentType, CancellationToken cancellationToken = default) { var actor = await mediator.Send(UpsertActorCommand.Create(agent), cancellationToken); var profile = await mediator.Send(CreateAgentProfileCommand.Create(actor.AgentId, profileId, content, contentType), cancellationToken); return(mapper.Map <IDocument>(profile)); }
public async Task <AgentProfileDocument> Handle(MergeAgentProfileCommand request, CancellationToken cancellationToken) { var profile = await Handle(GetAgentProfileQuery.Create(request.Agent, request.ProfileId), cancellationToken); if (profile == null) { return(await Handle( CreateAgentProfileCommand.Create(request.Agent, request.ProfileId, request.Content, request.ContentType), cancellationToken)); } return(await Handle(UpdateAgentProfileCommand.Create(request.Agent, request.ProfileId, request.Content, request.ContentType), cancellationToken)); }
public async Task <AgentProfileEntity> Handle(UpsertAgentProfileCommand request, CancellationToken cancellationToken) { var profile = await _mediator.Send(GetAgentProfileQuery.Create(request.AgentId, request.ProfileId), cancellationToken); if (profile == null) { return(await _mediator.Send( CreateAgentProfileCommand.Create(request.AgentId, request.ProfileId, request.Content, request.ContentType), cancellationToken)); } return(await _mediator.Send(UpdateAgentProfileCommand.Create(request.AgentId, request.ProfileId, request.Content, request.ContentType), cancellationToken)); }
public async Task <AgentProfileDocument> Handle(CreateAgentProfileCommand request, CancellationToken cancellationToken) { var agent = (AgentEntity)await _mediator.Send(MergeActorCommand.Create(request.Agent), cancellationToken); var profile = new AgentProfileEntity(request.Content, request.ContentType) { ProfileId = request.ProfileId, Agent = agent }; _context.AgentProfiles.Add(profile); await _context.SaveChangesAsync(cancellationToken); return(_mapper.Map <AgentProfileDocument>(profile)); }
public async Task <ActionResult> SaveAgentProfileAsync( [BindRequired, FromQuery] string profileId, [BindRequired, FromQuery] Agent agent, [BindRequired, FromHeader(Name = "Content-Type")] string contentType, [BindRequired, FromBody] byte[] content, CancellationToken cancellationToken = default) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var profile = await _mediator.Send(GetAgentProfileQuery.Create(agent, profileId), cancellationToken); if (Request.TryConcurrencyCheck(profile?.Document.Checksum, profile?.Document.LastModified, out int statusCode)) { return(StatusCode(statusCode)); } if (profile == null) { profile = await _mediator.Send( CreateAgentProfileCommand.Create(agent, profileId, content, contentType), cancellationToken); } else { profile = await _mediator.Send( UpdateAgentProfileCommand.Create(agent, profileId, content, contentType), cancellationToken); } Response.Headers.Add(HeaderNames.ETag, $"\"{profile.Document.Checksum}\""); Response.Headers.Add(HeaderNames.LastModified, profile.Document.LastModified?.ToString("o")); return(NoContent()); }