예제 #1
0
        public void TransformCheque()
        {
            //Arrange
            ChequeRequest request = new ChequeRequest
            {
                PersonName   = "Berry ",
                ChequeAmount = 1234.5m
            };

            string requestAmountInLetter = " one thousand and two hundred and thirty-four dollars and fifty cents ";

            //Act

            var newChequeMessage                       = client.PostAsJsonAsync(addChequeRoute, request).GetAwaiter().GetResult();
            var chequeId                               = newChequeMessage.Content.ReadAsAsync <int>().GetAwaiter().GetResult();
            HttpResponseMessage response               = client.GetAsync(string.Format(findChequeRoute, chequeId)).GetAwaiter().GetResult();
            ChequeResponse      retrivedCheque         = response.Content.ReadAsAsync <ChequeResponse>().GetAwaiter().GetResult();
            HttpResponseMessage updatedChequesResponse = client.PutAsJsonAsync(transformChequeRoute, retrivedCheque).GetAwaiter().GetResult();
            ChequeResponse      updatedCheque          = updatedChequesResponse.Content.ReadAsAsync <ChequeResponse>().GetAwaiter().GetResult();

            //Assert
            Assert.AreEqual(HttpStatusCode.Created, newChequeMessage.StatusCode);
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

            Assert.IsNotNull(retrivedCheque);
            Assert.AreEqual(retrivedCheque.PersonName, request.PersonName.ToUpper());

            Assert.AreEqual(HttpStatusCode.OK, updatedChequesResponse.StatusCode);
            Assert.IsNotNull(updatedCheque.ChequeAmountInLetter);
            Assert.AreEqual(requestAmountInLetter.Trim(), updatedCheque.ChequeAmountInLetter.Trim());
        }
예제 #2
0
        public ChequeResponse FindCheque(int ChequeId)
        {
            ChequeResponse cheque = null;

            using (var connection = new SqlConnection(_connectionString))
            {
                cheque = connection.QueryFirstOrDefault <ChequeResponse>("[dbo].[GetCheque]",
                                                                         new { Id = ChequeId }, commandType: CommandType.StoredProcedure);
            }
            return(cheque);
        }
예제 #3
0
        public ChequeResponse Create(ChequeRequest request)
        {
            ValidatEntity(request);
            ChequeResponse response = new ChequeResponse
            {
                DateTime   = DateTime.Now,
                PersonName = request.PersonName.ToUpper(),
                Amount     = request.ChequeAmount.Value,
            };

            return(response);
        }
예제 #4
0
 public HttpResponseMessage Update([FromBody] ChequeResponse response)
 {
     try
     {
         ChequeResponse updatedCheque = chequeComponent.Transform(response);
         return(Request.CreateResponse(HttpStatusCode.OK, updatedCheque));
     }
     catch (Exception ex)
     {
         var errorResponse = Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message, ex);
         return(errorResponse);
     }
 }
예제 #5
0
        public HttpResponseMessage Post([FromBody] ChequeDto cheque)
        {
            if (cheque == null)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new BaseApiResponse
                {
                    Code = InternalApiStatusCode.Error,
                    Message = "Invalid cheque object"
                }));
            }

            if (string.IsNullOrEmpty(cheque.LastName) || string.IsNullOrEmpty(cheque.FirstName))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new BaseApiResponse
                {
                    Code = InternalApiStatusCode.FailedRequestValidation,
                    Message = "Invalid cheque object, name is not provided"
                }));
            }

            if (cheque.Amount <= 0)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new BaseApiResponse
                {
                    Code = InternalApiStatusCode.FailedRequestValidation,
                    Message = "Invalid cheque object, amount should be greater than zero"
                }));
            }


            var chequeResposne = new ChequeResponse();

            try
            {
                var chequeResult = _chequeRepository.Add(cheque);

                chequeResposne.Cheque = chequeResult;
                chequeResposne.Code   = InternalApiStatusCode.Success;

                return(Request.CreateResponse(HttpStatusCode.Created, chequeResposne));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
예제 #6
0
        public int AddCheque(ChequeResponse cheque)
        {
            int recordId = 0;

            using (var connection = new SqlConnection(_connectionString))
            {
                var parameters = new DynamicParameters();

                parameters.Add("@PersonName", cheque.PersonName);
                parameters.Add("@Amount", cheque.Amount);
                parameters.Add("@DateTime", cheque.DateTime);


                recordId = connection.ExecuteScalar <int>("[dbo].[AddCheque]", parameters,
                                                          commandType: CommandType.StoredProcedure);
            }
            return(recordId);
        }
예제 #7
0
 public HttpResponseMessage Post([FromBody] ChequeRequest request)
 {
     try
     {
         ChequeResponse newCheque = chequeComponent.Create(request);
         int            recordId  = chequeData.AddCheque(newCheque);
         return(Request.CreateResponse(HttpStatusCode.Created, recordId));
     }
     catch (ValidationException ex)
     {
         var errorResponse = Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message, ex);
         return(errorResponse);
     }
     catch (Exception ex)
     {
         var errorResponse = Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message, ex);
         return(errorResponse);
     }
 }
예제 #8
0
        public HttpResponseMessage Put(int id, [FromBody] ChequeRequest cheque)
        {
            if (string.IsNullOrEmpty(cheque.LastName) || string.IsNullOrEmpty(cheque.FirstName))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new BaseApiResponse
                {
                    Code = InternalApiStatusCode.FailedRequestValidation,
                    Message = "Invalid cheque object"
                }));
            }

            var chequeResposne = new ChequeResponse();

            try
            {
                var chequeResult = _chequeRepository.Update(new ChequeDto
                {
                    ChequeId  = id,
                    LastName  = cheque.LastName,
                    FirstName = cheque.FirstName,
                    Amount    = cheque.Amount,
                });

                if (chequeResult == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.NotFound, new BaseApiResponse
                    {
                        Code = InternalApiStatusCode.Error,
                        Message = "cheque is not found"
                    }));
                }

                chequeResposne.Cheque  = chequeResult;
                chequeResposne.Code    = InternalApiStatusCode.Success;
                chequeResposne.Message = "cheque is updated";

                return(Request.CreateResponse(HttpStatusCode.OK, chequeResposne));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
예제 #9
0
 public HttpResponseMessage GetById(int id)
 {
     try
     {
         ChequeResponse cheque = chequeData.FindCheque(id);
         if (cheque != null)
         {
             return(Request.CreateResponse(HttpStatusCode.OK, cheque));
         }
         else
         {
             return(Request.CreateResponse(HttpStatusCode.NotFound));
         }
     }
     catch (Exception ex)
     {
         var errorResponse = Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message, ex);
         return(errorResponse);
     }
 }
예제 #10
0
        public ActionResult Transform(int id)
        {
            HttpResponseMessage transformedChequeMessage = new HttpResponseMessage();


            HttpResponseMessage chequeMessage = HttpClient.GetAsync(string.Format(FindChequeRoute, id)).GetAwaiter().GetResult();

            if (chequeMessage.IsSuccessStatusCode)
            {
                ChequeResponse originalCheque = chequeMessage.Content.ReadAsAsync <ChequeResponse>().GetAwaiter().GetResult();
                transformedChequeMessage = HttpClient.PutAsJsonAsync(TransformChequeRoute, originalCheque).GetAwaiter().GetResult();

                ChequeResponse updatedCheque = transformedChequeMessage.Content.ReadAsAsync <ChequeResponse>().GetAwaiter().GetResult();
                return(View("Transform", updatedCheque));
            }
            else
            {
                HttpError error = chequeMessage.Content.ReadAsAsync <HttpError>().GetAwaiter().GetResult();
                return(new HttpStatusCodeResult(transformedChequeMessage.StatusCode, error.Message));
            }
        }
예제 #11
0
        public void FindCheque()
        {
            //Arrange
            ChequeRequest request = new ChequeRequest
            {
                PersonName   = "New Person",
                ChequeAmount = 1234.5m
            };

            //Act

            var newChequeMessage = client.PostAsJsonAsync(addChequeRoute, request).GetAwaiter().GetResult();
            var id = newChequeMessage.Content.ReadAsAsync <int>().GetAwaiter().GetResult();
            HttpResponseMessage response = client.GetAsync(string.Format(findChequeRoute, id)).GetAwaiter().GetResult();
            ChequeResponse      cheque   = response.Content.ReadAsAsync <ChequeResponse>().GetAwaiter().GetResult();

            //Assert
            Assert.AreEqual(HttpStatusCode.Created, newChequeMessage.StatusCode);
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.IsNotNull(cheque);
            Assert.AreEqual(cheque.PersonName, request.PersonName.ToUpper());
        }
예제 #12
0
        public HttpResponseMessage Get(int id)
        {
            if (id <= 0)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new BaseApiResponse
                {
                    Code = InternalApiStatusCode.FailedRequestValidation,
                    Message = "id is invalid"
                }));
            }


            var chequeResposne = new ChequeResponse();

            try
            {
                var cheque = _chequeRepository.Get(id);

                if (cheque == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.NotFound, new BaseApiResponse
                    {
                        Code = InternalApiStatusCode.Error,
                        Message = "cheque item is not found"
                    }));
                }

                chequeResposne.Cheque  = cheque;
                chequeResposne.Code    = InternalApiStatusCode.Success;
                chequeResposne.Message = "cheque item added";


                return(Request.CreateResponse(HttpStatusCode.OK, chequeResposne));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
예제 #13
0
 public ChequeResponse Transform(ChequeResponse response)
 {
     response.ChequeAmountInLetter = ProcessNumber(response.Amount);
     return(response);
 }