public async Task <IActionResult> UpdatePosition([FromBody] PurchasingDispositionUpdatePositionPostedViewModel data)
        {
            try
            {
                identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value;

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

                validateService.Validate(data);

                await facade.UpdatePosition(data, identityService.Username);

                Dictionary <string, object> Result =
                    new ResultFormatter(ApiVersion, General.CREATED_STATUS_CODE, General.OK_MESSAGE)
                    .Ok();
                return(Created(String.Concat(Request.Path, "/", 0), Result));
            }
            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 Task <int> UpdatePosition(PurchasingDispositionUpdatePositionPostedViewModel data, string user)
        {
            int updated = 0;

            using (var transaction = dbContext.Database.BeginTransaction())
            {
                foreach (var dispositionNo in data.PurchasingDispositionNoes)
                {
                    PurchasingDisposition purchasingDisposition = dbSet.FirstOrDefault(x => x.DispositionNo == dispositionNo);

                    purchasingDisposition.Position = (int)data.Position;
                    EntityExtension.FlagForUpdate(purchasingDisposition, user, "Facade");
                }
                updated = await dbContext.SaveChangesAsync();

                transaction.Commit();
            }
            return(updated);
        }
        public async void Should_Success_Update_Position()
        {
            PurchasingDispositionFacade facade = new PurchasingDispositionFacade(ServiceProvider, _dbContext(GetCurrentMethod()));
            var prepData = await _dataUtil(facade, GetCurrentMethod()).GetTestData();

            PurchasingDispositionUpdatePositionPostedViewModel data = new PurchasingDispositionUpdatePositionPostedViewModel()
            {
                Position = Lib.Enums.ExpeditionPosition.CASHIER_DIVISION,
                PurchasingDispositionNoes = new List <string>()
                {
                    prepData.DispositionNo
                }
            };
            PurchasingDispositionUpdatePositionPostedViewModel nullModel = new PurchasingDispositionUpdatePositionPostedViewModel();

            Assert.True(nullModel.Validate(null).Count() > 0);
            int updated = await facade.UpdatePosition(data, USERNAME);

            Assert.True(updated > 0);
        }