Esempio n. 1
0
        public IActionResult AnswerQuestion([FromBody] AnswersRequest answersRequest)
        {
            Logger.Debug("Request: {0}", Framework.Common.SerializeJson.ToObject(answersRequest));
            DateTime dateRequest   = DateTime.Now;
            var      response      = new IResponse <AnswersResponse>();
            string   correlationId = string.Empty;

            try
            {
                #region Authorization Usuario y Contraseña
                if (string.IsNullOrEmpty(Request.Headers["Authorization"]))
                {
                    var validate = Models.Response.Error(null, "NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }

                correlationId = Request.Headers["Correlation-Id"].ToString();

                Core.Entity.User user = new Core.Entity.User()
                {
                    Public   = answersRequest.PublicToken,
                    UserName = answersRequest.UserAplication,
                    Password = answersRequest.PasswordAplication
                };
                var userAuthenticate = _user.Authenticate(user);
                if (userAuthenticate.Data == null)
                {
                    var validate = Models.Response.Error("NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                Core.Entity.UserPolicy userPolicy = new Core.Entity.UserPolicy()
                {
                    AppUserId = answersRequest.AppUserId,
                    IdUser    = ((Core.Entity.User)userAuthenticate.Data).Id
                };
                Core.Entity.Policy policy = new Core.Entity.Policy()
                {
                    Name = Request.Path.Value
                };
                var userPolicyAuthorize = _userPolicy.Authorize(userPolicy, policy);
                if (userPolicyAuthorize.Data == null)
                {
                    var validate = Models.Response.Error("NotUnauthorized");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                #endregion

                AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                var credentialToken        = authHeader.Parameter;
                var responsetokenValidated = _tokenManager.GetPrincipalFromExpiredToken(credentialToken);

                if (responsetokenValidated.Data == null)
                {
                    response.Data    = null;
                    response.Message = responsetokenValidated.Message;
                    response.State   = responsetokenValidated.State;
                    return(BadRequest(response));
                }
                var principal   = (ClaimsPrincipal)responsetokenValidated.Data;
                var claimList   = principal.Claims.ToList();
                var verifyEmail = claimList[2].Value;

                if (!verifyEmail.Equals(answersRequest.Email.Trim()))
                {
                    var validate = Models.Response.Error("ClientNotSession");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(BadRequest(response));
                }

                var moduleClient = _clientModule.InsertClientModuleAnswers(answersRequest.Email, answersRequest.ModuleNumber, answersRequest.AppUserId);

                if (moduleClient.Data == null)
                {
                    response.Data    = null;
                    response.Message = moduleClient.Message;
                    response.State   = moduleClient.State;
                    return(BadRequest(response));
                }

                var      moduleData          = (Core.Entity.Coupon)moduleClient.Data;
                var      contestDate         = _configuration.GetValue <string>("ContestDate");
                var      separateDate        = contestDate.Split("/");
                DateTime contestDateFormated = new DateTime(Convert.ToInt32(separateDate[2]), Convert.ToInt32(separateDate[1]), Convert.ToInt32(separateDate[0]));
                string   dateInText          = String.Format(new CultureInfo("es-BO"), "{0:D}", contestDateFormated);
                var      messageCoupon       = _configuration.GetValue <string>("Connectors_Email:MessageCoupon");
                _emailmanager.SendEmail(claimList[2].Value, "Finalización de módulo", messageCoupon, messageCoupon, "¡FELICIDADES!", Request.Headers["origin"], "", "", moduleData.CouponNumber, moduleData.CouponRegistred, dateInText);


                AnswersResponse questionAswerResponse = new AnswersResponse()
                {
                    Email = answersRequest.Email
                };
                response.Data    = questionAswerResponse;
                response.Message = Models.Response.CommentMenssage("AnswerRegistred");
                response.State   = "000";
                return(Ok(response));
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0}; Exception: {1}", ex.Message, Framework.Common.SerializeJson.ToObject(ex));
                response.Data    = null;
                response.Message = "Error General";
                response.State   = "099";
                return(BadRequest(response));
            }
            finally
            {
                DateTime dateResponse = DateTime.Now;
                Core.Entity.ConsumptionHistory consumptionHistory = new Core.Entity.ConsumptionHistory
                {
                    ApiName       = Request.Path.Value,
                    Host          = Dns.GetHostName() + ":" + Request.Host.Port,
                    CorrelationId = correlationId,
                    AppUserId     = "token",
                    Request       = Framework.Common.SerializeJson.ToObject(answersRequest),
                    DateRequest   = dateRequest,
                    Response      = Framework.Common.SerializeJson.ToObject(response),
                    DateResponse  = dateResponse,
                    CodeResponse  = response.State
                };
                _consumptionHistory.Insert(consumptionHistory);
                Logger.Debug("Request: {0} Response: {1}", answersRequest, response);
            }
        }
Esempio n. 2
0
 public override Task <EmptyResponse> SaveQuestionnaire(AnswersRequest request, ServerCallContext context)
 {
     return(Task.FromResult(new EmptyResponse()));
 }
Esempio n. 3
0
 public async Task Post([FromBody] AnswersRequest request)
 {
     _service.AddAsync(request.Answers);
 }