public async Task <IActionResult> Put(int id, [FromBody] GarmentInternalPurchaseOrderViewModel ViewModel)
        {
            try
            {
                identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value;

                IValidateService validateService = (IValidateService)serviceProvider.GetService(typeof(IValidateService));

                validateService.Validate(ViewModel);

                var model = mapper.Map <GarmentInternalPurchaseOrder>(ViewModel);

                await facade.Split(id, model, identityService.Username);

                return(NoContent());
            }
            catch (ServiceValidationExeption e)
            {
                Dictionary <string, object> Result =
                    new ResultFormatter(ApiVersion, General.BAD_REQUEST_STATUS_CODE, General.BAD_REQUEST_MESSAGE)
                    .Fail(e);
                return(BadRequest(Result));
            }
            catch (Exception e)
            {
                Dictionary <string, object> Result =
                    new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message)
                    .Fail();
                return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result));
            }
        }
        public async void Should_Success_Validate_Data()
        {
            var viewModelNullItems = new GarmentInternalPurchaseOrderViewModel
            {
                Items = null
            };

            Assert.True(viewModelNullItems.Validate(null).Count() > 0);

            var viewModelZeroQuantity = new GarmentInternalPurchaseOrderViewModel
            {
                Items = new List <GarmentInternalPurchaseOrderItemViewModel>
                {
                    new GarmentInternalPurchaseOrderItemViewModel
                    {
                        Quantity = 0
                    }
                }
            };

            Assert.True(viewModelZeroQuantity.Validate(null).Count() > 0);

            var facade   = new GarmentInternalPurchaseOrderFacade(_dbContext(GetCurrentMethod()));
            var listData = await dataUtil(facade, GetCurrentMethod()).GetTestData();

            var data = listData.First();
            var item = data.Items.First();

            Mock <IServiceProvider> serviceProvider = new Mock <IServiceProvider>();

            serviceProvider.
            Setup(x => x.GetService(typeof(PurchasingDbContext)))
            .Returns(_dbContext(GetCurrentMethod()));

            var viewModelDuplicate = new GarmentInternalPurchaseOrderViewModel
            {
                Id    = data.Id,
                Items = new List <GarmentInternalPurchaseOrderItemViewModel>
                {
                    new GarmentInternalPurchaseOrderItemViewModel
                    {
                        Id       = item.Id,
                        Quantity = item.Quantity
                    }
                }
            };
            ValidationContext validationDuplicateContext = new ValidationContext(viewModelDuplicate, serviceProvider.Object, null);

            Assert.True(viewModelDuplicate.Validate(validationDuplicateContext).Count() > 0);

            var viewModelNotFoundDuplicate = new GarmentInternalPurchaseOrderViewModel
            {
                Id    = 1,
                Items = new List <GarmentInternalPurchaseOrderItemViewModel>
                {
                    new GarmentInternalPurchaseOrderItemViewModel
                    {
                        Id       = 0,
                        Quantity = 1
                    }
                }
            };
            ValidationContext validationNotFoundDuplicateContext = new ValidationContext(viewModelNotFoundDuplicate, serviceProvider.Object, null);

            Assert.True(viewModelNotFoundDuplicate.Validate(validationNotFoundDuplicateContext).Count() > 0);
        }