Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
 /// <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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 7
0
        public IActionResult GetBetaRequest(string hdid)
        {
            BetaRequest result = this.betaRequestService.GetBetaRequest(hdid);

            return(new JsonResult(result));
        }