예제 #1
0
        public ActionResult GetClientDetail([FromQuery(Name = "clientName")] string clientName)
        {
            try
            {
                string connString = Startup.Configuration["MetadataDatabase:ConnectionString"];
                _clientValidationDA = new ClientValidationDA();

                var result = _clientValidationDA.ClientDetail(clientName, connString);
                if (result.ReturnValue == -1)
                {
                    return(BadRequest(new ErrorResponseDTO()
                    {
                        MessageCode = result.Result,
                        ErrorType = "Bad Request",
                        RequestId = HttpContext.TraceIdentifier.ToString()
                    }));
                }
                else
                {
                    SuccessResponseDTO <ClientDTO> loginSuccessDTO = new SuccessResponseDTO <ClientDTO>().CreateSuccessResponse(result.Table, result.Result, HttpContext.TraceIdentifier.ToString());
                    return(Ok(loginSuccessDTO));
                }
            }
            catch (Exception ex)
            {
                //_logger.LogCritical(ex.ToString());
                return(StatusCode(500, new ErrorResponseDTO()
                {
                    MessageCode = "Inernal server error",
                    RequestId = HttpContext.TraceIdentifier.ToString(),
                    ErrorType = ex.Message.ToString()
                }));
            }
        }
        public async Task <IActionResult> LoginAsync(LoginRequestModel loginRequestModel)
        {
            SuccessResponseDTO <LoginResponseModel> loginResponseModel = new SuccessResponseDTO <LoginResponseModel>();

            if (ModelState.IsValid)
            {
                loginResponseModel = await _mediator.Send(new LoginUserCommand()
                {
                    Email      = loginRequestModel.Email,
                    Password   = loginRequestModel.Password,
                    TenantName = loginRequestModel.TenantName,
                    SceretKey  = _appSettings.EncryptionKey,
                    JWTAuth    = _jwtAuth
                });
            }
            else
            {
                ErrorResponseDTO err = new ErrorResponseDTO
                {
                    TenantName  = loginRequestModel.TenantName,
                    ErrorType   = "required input is missing",
                    MessageCode = "500",
                    RequestId   = Convert.ToString(Guid.NewGuid())
                };
                return(Ok(err));
            }
            return(Ok(loginResponseModel));
        }
예제 #3
0
        public async Task <ActionResult> GetLocalLogin([FromBody] LoginDTO loginInfo)
        {
            StringValues clientConnectionString;

            try
            {
                if (HttpContext.Request.Headers.TryGetValue("ConnectionString", out clientConnectionString))
                {
                    if (ModelState.IsValid)
                    {
                        _loginDA = new LoginDA();

                        var result = _loginDA.GetLocalLogin(loginInfo, clientConnectionString);
                        if (result.ReturnValue == -1)
                        {
                            return(BadRequest(new ErrorResponseDTO()
                            {
                                MessageCode = _messageCodePrefix + result.Result,
                                ErrorType = "Bad Request",
                                RequestId = HttpContext.TraceIdentifier.ToString()
                            }));
                        }
                        else
                        {
                            //result.Table.AuthorizationToken = GenearteJWTToken.GenerateToken(result.Table.UserId.ToString());
                            //dynamic response = await GenearteJWTToken.GenerateToken();
                            //if (response.ToString() != "Token Invalid")
                            //  result.Table.AuthenticationToken = ((Newtonsoft.Json.Linq.JValue)((Newtonsoft.Json.Linq.JProperty)((Newtonsoft.Json.Linq.JContainer)response).Last).Value).Value.ToString();
                            //else
                            //  return BadRequest();
                            SuccessResponseDTO <LoginDTO> loginSuccessDTO = new SuccessResponseDTO <LoginDTO>().CreateSuccessResponse(result.Table, _messageCodePrefix + result.Result, HttpContext.TraceIdentifier.ToString());
                            return(Ok(loginSuccessDTO));
                        }
                    }
                    else
                    {
                        return(BadRequest());
                    }
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex.ToString());
                return(StatusCode(500, new ErrorResponseDTO()
                {
                    MessageCode = "Inernal server error",
                    RequestId = HttpContext.TraceIdentifier.ToString(),
                    ErrorType = ex.Message.ToString()
                }));
            }
        }
        public async Task <IActionResult> CalculatePriceAsync(string goldPrice, string weight, string discount, string tenantName)
        {
            SuccessResponseDTO <string> totalPrice = await _mediator.Send(new CalculatePriceCommand()
            {
                Discount   = discount,
                GoldPrice  = goldPrice,
                Weight     = weight,
                TenantName = tenantName
            });

            return(Ok(totalPrice));
        }
        public async Task <FileStreamResult> DownloadFileAsync(string goldPrice, string weight, string discount, string totalPrice, string tenantName)
        {
            SuccessResponseDTO <PrintModel> response = await _mediator.Send(new PrintPDFCommand()
            {
                Discount   = discount,
                GoldPrice  = goldPrice,
                Weight     = weight,
                TenantName = tenantName,
                TotalPrice = totalPrice
            });

            //Defining the ContentType for pdf file.
            string contentType = "application/pdf";
            //Define the file name.
            string fileName = $"{tenantName}{DateTime.UtcNow}.pdf";

            return(File(response?.Response?.stream, contentType, fileName));
        }
예제 #6
0
        public async Task <SuccessResponseDTO <PrintModel> > Handle(PrintPDFCommand request, CancellationToken cancellationToken)
        {
            SuccessResponseDTO <PrintModel> successResponseDTO = new SuccessResponseDTO <PrintModel>();

            try
            {
                //Create a new PDF document
                PdfDocument doc = new PdfDocument();
                //Add a page
                PdfPage page = doc.Pages.Add();
                //Create a PdfGrid
                PdfGrid pdfGrid = new PdfGrid();
                //Create a DataTable
                DataTable dataTable = new DataTable();
                //Add columns to the DataTable
                dataTable.Columns.Add("GoldPrice");
                dataTable.Columns.Add("Weight");
                dataTable.Columns.Add("Discount");
                dataTable.Columns.Add("Total Price");
                //Add rows to the DataTable
                dataTable.Rows.Add(new object[] { request.GoldPrice, request.Weight, request.Discount, request.TotalPrice });
                //Assign data source
                pdfGrid.DataSource = dataTable;
                //Draw grid to the page of PDF document
                pdfGrid.Draw(page, 10, 10, 40);
                //Save the PDF document to stream
                MemoryStream stream = new MemoryStream();
                doc.Save(stream);
                //If the position is not set to '0' then the PDF will be empty.
                stream.Position = 0;
                //Close the document.
                doc.Close(true);
                PrintModel printModel = new PrintModel()
                {
                    stream = stream
                };
                successResponseDTO = new SuccessResponseDTO <PrintModel>().CreateSuccessResponse(printModel, "500", "document created", "", "", request.TenantName);
            }
            catch (Exception ex)
            {
                successResponseDTO = new SuccessResponseDTO <PrintModel>().CreateSuccessResponse(null, "500", ex.ToString(), "", "", request.TenantName);
            }
            return(successResponseDTO);
        }
예제 #7
0
        public async Task <SuccessResponseDTO <string> > Handle(CalculatePriceCommand request, CancellationToken cancellationToken)
        {
            SuccessResponseDTO <string> successResponseDTO = new SuccessResponseDTO <string>();

            try
            {
                if (string.IsNullOrEmpty(request.Discount))
                {
                    successResponseDTO = new SuccessResponseDTO <string>().CreateSuccessResponse(Convert.ToString(Convert.ToInt32(request.GoldPrice) * Convert.ToInt32(request.Weight)), "200", "price calculated sucessfully", "", "", request.TenantName);
                }
                else
                {
                    string price = Convert.ToString((Convert.ToInt32(request.GoldPrice) * Convert.ToInt32(request.Weight) / Convert.ToInt32(request.Discount)));
                    successResponseDTO = new SuccessResponseDTO <string>().CreateSuccessResponse(price, "200", "price calculated sucessfully", "", "", request.TenantName);
                }
            }
            catch (Exception ex)
            {
                successResponseDTO = new SuccessResponseDTO <string>().CreateSuccessResponse("", "500", ex.ToString(), "", "", request.TenantName);
            }
            return(successResponseDTO);
        }
        public async Task <SuccessResponseDTO <LoginResponseModel> > Handle(LoginUserCommand request, CancellationToken cancellationToken)
        {
            SuccessResponseDTO <LoginResponseModel> successResponseDTO;

            try
            {
                if (!string.IsNullOrEmpty(request.Password))
                {
                    //decrypt password
                    string password = EncryptionDecryptionUsingSymmetricKey.EncryptString(request.SceretKey, request.Password);
                    if (!string.IsNullOrEmpty(request.Email))
                    {
                        string email = request.Email?.Split("@")[0];
                        //get tenant id from db
                        Guid TenantId = _jewelleryContext.Tenants.Where(t => t.TenantName == request.TenantName).Select(t => t.TenantId).FirstOrDefault();
                        if (TenantId != null && TenantId != Guid.Empty)
                        {
                            //get user details from db
                            LoginResponseModel loginResponseModel = _jewelleryContext.Users.Where(u => u.TenantId == TenantId && u.IsActive && u.UserName == email && u.Password == password).Join(_jewelleryContext.Roles, user => user.RoleId, role => role.RoleId, (user, role) => new LoginResponseModel
                            {
                                TenantId   = user.TenantId,
                                Email      = user.UserName,
                                FirstName  = user.FirstName,
                                LastName   = user.LastName,
                                Role       = role.RoleName,
                                UserId     = user.UserId,
                                IsDiscount = role.RoleName == Constants.Privileged ? true : false
                            }).FirstOrDefault();
                            if (loginResponseModel != null)
                            {
                                //generate jwt token
                                string token = request.JWTAuth.GenerateToken(loginResponseModel, DateTime.UtcNow.AddMinutes(60));
                                if (!string.IsNullOrEmpty(token))
                                {
                                    var user = _jewelleryContext.Users.Where(u => u.UserId == loginResponseModel.UserId).First();
                                    user.Token = token;
                                    _jewelleryContext.SaveChanges();
                                    loginResponseModel.Token = token;
                                    successResponseDTO       = new SuccessResponseDTO <LoginResponseModel>().CreateSuccessResponse(loginResponseModel, "200", Constants.Sucessfully_logged_in, Convert.ToString(loginResponseModel.TenantId), "", request.TenantName);
                                    return(successResponseDTO);
                                }
                                else
                                {
                                    successResponseDTO = new SuccessResponseDTO <LoginResponseModel>().CreateSuccessResponse(loginResponseModel, "500", Constants.Token_is_not_generated, Convert.ToString(loginResponseModel.TenantId), "", request.TenantName);
                                    return(successResponseDTO);
                                }
                            }
                            else
                            {
                                successResponseDTO = new SuccessResponseDTO <LoginResponseModel>().CreateSuccessResponse(new LoginResponseModel(), "500", Constants.Username_or_password_is_incorrect, null, "", request.TenantName);
                                return(successResponseDTO);
                            }
                        }
                        else
                        {
                            successResponseDTO = new SuccessResponseDTO <LoginResponseModel>().CreateSuccessResponse(new LoginResponseModel(), "500", Constants.Client_doesn_not_exist, "", "", request.TenantName);
                            return(successResponseDTO);
                        }
                    }
                    else
                    {
                        successResponseDTO = new SuccessResponseDTO <LoginResponseModel>().CreateSuccessResponse(new LoginResponseModel(), "500", Constants.Email_is_required, "", "", request.TenantName);
                        return(successResponseDTO);
                    }
                }
                else
                {
                    successResponseDTO = new SuccessResponseDTO <LoginResponseModel>().CreateSuccessResponse(new LoginResponseModel(), "500", Constants.Password_is_required, "", "", request.TenantName);
                    return(successResponseDTO);
                }
            }
            catch (Exception ex)
            {
                //log exception
                successResponseDTO = new SuccessResponseDTO <LoginResponseModel>().CreateSuccessResponse(new LoginResponseModel(), "500", ex.ToString(), "", "", request.TenantName);
                return(successResponseDTO);
            }
        }