public RequestResult <BetaRequest> PutBetaRequest(BetaRequest betaRequest, string hostUrl) { this.logger.LogTrace($"Creating a beta request... {JsonConvert.SerializeObject(betaRequest)}"); // If there is a previous request, update it isntead of creating a new one BetaRequest previousRequest = this.betaRequestDelegate.GetBetaRequest(betaRequest.HdId).Payload; if (previousRequest != null) { RequestResult <BetaRequest> requestResult = new RequestResult <BetaRequest>(); DBResult <BetaRequest> insertResult = this.betaRequestDelegate.UpdateBetaRequest(betaRequest); if (insertResult.Status == DBStatusCode.Updated) { Dictionary <string, string> keyValues = new Dictionary <string, string>(); keyValues.Add(HostTemplateVariable, hostUrl); this.emailQueueService.QueueNewEmail(betaRequest.EmailAddress, EmailTemplateName.BetaConfirmationTemplate, keyValues); requestResult.ResourcePayload = insertResult.Payload; requestResult.ResultStatus = ResultType.Success; this.logger.LogDebug($"Finished updating beta request. {JsonConvert.SerializeObject(insertResult)}"); } else { requestResult.ResultError = new RequestResultError() { ResultMessage = insertResult.Message, ErrorCode = ErrorTranslator.ServiceError(ErrorType.CommunicationInternal, ServiceType.Database) }; requestResult.ResultStatus = ResultType.Error; } return(requestResult); } else { betaRequest.CreatedBy = betaRequest.HdId; betaRequest.UpdatedBy = betaRequest.HdId; DBResult <BetaRequest> insertResult = this.betaRequestDelegate.InsertBetaRequest(betaRequest); RequestResult <BetaRequest> requestResult = new RequestResult <BetaRequest>(); if (insertResult.Status == DBStatusCode.Created) { Dictionary <string, string> keyValues = new Dictionary <string, string>(); keyValues.Add(HostTemplateVariable, hostUrl); this.emailQueueService.QueueNewEmail(betaRequest.EmailAddress, EmailTemplateName.BetaConfirmationTemplate, keyValues); requestResult.ResourcePayload = insertResult.Payload; requestResult.ResultStatus = ResultType.Success; this.logger.LogDebug($"Finished creating beta request. {JsonConvert.SerializeObject(insertResult)}"); } else { requestResult.ResultError = new RequestResultError() { ResultMessage = insertResult.Message, ErrorCode = ErrorTranslator.ServiceError(ErrorType.CommunicationInternal, ServiceType.Database) }; requestResult.ResultStatus = ResultType.Error; } return(requestResult); } }
/// <summary> /// Constructs a UserBetaRequest from a BetaRequest model. /// </summary> /// <param name="model">A beta request models.</param> /// <returns>A new UserBetaRequest.</returns> public static UserBetaRequest CreateFromDbModel(BetaRequest model) { return(new UserBetaRequest() { Id = model.HdId, EmailAddress = model.EmailAddress, Version = model.Version, RegistrationDatetime = model.CreatedDateTime, }); }
/// <inheritdoc /> public DBResult <BetaRequest> GetBetaRequest(string hdId) { this.logger.LogTrace($"Getting the beta request from DB... {hdId}"); DBResult <BetaRequest> result = new DBResult <BetaRequest>(); BetaRequest betaRequest = this.dbContext.BetaRequest.Find(hdId); result.Payload = betaRequest; result.Status = betaRequest != null ? DBStatusCode.Read : DBStatusCode.NotFound; this.logger.LogDebug($"Finished getting the beta request from DB. {JsonSerializer.Serialize(result)}"); return(result); }
public IActionResult CreateBetaRequest([FromBody] BetaRequest betaRequest) { string referer = this.httpContextAccessor.HttpContext.Request .GetTypedHeaders() .Referer? .GetLeftPart(UriPartial.Authority) !; RequestResult <BetaRequest> result = this.betaRequestService.PutBetaRequest(betaRequest, referer); return(new JsonResult(result)); }
/// <inheritdoc /> public DBResult <BetaRequest> InsertBetaRequest(BetaRequest betaRequest) { this.logger.LogTrace($"Inserting beta request to DB... {JsonSerializer.Serialize(betaRequest)}"); DBResult <BetaRequest> result = new DBResult <BetaRequest>(); this.dbContext.Add <BetaRequest>(betaRequest); try { this.dbContext.SaveChanges(); result.Status = DBStatusCode.Created; } catch (DbUpdateException e) { result.Status = DBStatusCode.Error; result.Message = e.Message; } this.logger.LogDebug($"Finished inserting beta request to DB. {JsonSerializer.Serialize(result)}"); return(result); }
/// <inheritdoc /> public DBResult <BetaRequest> UpdateBetaRequest(BetaRequest betaRequest) { this.logger.LogTrace($"Updating beta request in DB... {JsonSerializer.Serialize(betaRequest)}"); DBResult <BetaRequest> result = this.GetBetaRequest(betaRequest.HdId); if (result.Status == DBStatusCode.Read) { // Copy certain attributes into the fetched Beta Request result.Payload.EmailAddress = betaRequest.EmailAddress; try { this.dbContext.SaveChanges(); result.Status = DBStatusCode.Updated; } catch (DbUpdateConcurrencyException e) { result.Status = DBStatusCode.Concurrency; result.Message = e.Message; } } this.logger.LogDebug($"Finished updating beta request in DB. {JsonSerializer.Serialize(result)}"); return(result); }
public IActionResult GetBetaRequest(string hdid) { BetaRequest result = this.betaRequestService.GetBetaRequest(hdid); return(new JsonResult(result)); }