public static TransactionFormViewModel Create(EnumTransactionStatus enumTransactionStatus, ITTransRepository transRepository, IMWarehouseRepository mWarehouseRepository, IMSupplierRepository mSupplierRepository, IMUnitTypeRepository mUnitTypeRepository, IMJobTypeRepository mJobTypeRepository)
        {
            TransactionFormViewModel viewModel = new TransactionFormViewModel();
            TTrans trans = SetNewTrans(enumTransactionStatus);

            viewModel.Trans = trans;
            Helper.CommonHelper.SetViewModelByStatus(viewModel, enumTransactionStatus);

            viewModel.TransFactur   = trans.TransFactur;
            viewModel.TransDate     = trans.TransDate;
            viewModel.TransId       = trans.Id;
            viewModel.TransStatus   = trans.TransStatus;
            viewModel.WarehouseId   = trans.WarehouseId;
            viewModel.WarehouseIdTo = trans.WarehouseIdTo;
            viewModel.UnitTypeId    = trans.UnitTypeId;
            viewModel.JobTypeId     = trans.JobTypeId;
            viewModel.TransDesc     = trans.TransDesc;

            IList <MWarehouse> list       = mWarehouseRepository.GetAll();
            MWarehouse         mWarehouse = new MWarehouse();

            mWarehouse.WarehouseName = "-Pilih Gudang-";
            list.Insert(0, mWarehouse);
            viewModel.WarehouseList   = new SelectList(list, "Id", "WarehouseName");
            viewModel.WarehouseToList = new SelectList(list, "Id", "WarehouseName");

            IList <MSupplier> listSupplier = mSupplierRepository.GetAll();
            MSupplier         mSupplier    = new MSupplier();

            mSupplier.SupplierName = "-Pilih Supplier-";
            listSupplier.Insert(0, mSupplier);
            viewModel.SupplierList = new SelectList(listSupplier, "Id", "SupplierName");

            IList <MUnitType> listUnitType = mUnitTypeRepository.GetAll();
            MUnitType         mUnitType    = new MUnitType();

            mUnitType.UnitTypeName = "-Pilih Unit-";
            listUnitType.Insert(0, mUnitType);
            viewModel.UnitTypeList = new SelectList(listUnitType, "Id", "UnitTypeName");

            IList <MJobType> listJobType = mJobTypeRepository.GetAll();
            MJobType         mJobType    = new MJobType();

            mJobType.JobTypeName = "-Pilih Jenis Pekerjaan-";
            listJobType.Insert(0, mJobType);
            viewModel.JobTypeList = new SelectList(listJobType, "Id", "JobTypeName");

            //fill payment method
            var values = from EnumPaymentMethod e in Enum.GetValues(typeof(EnumPaymentMethod))
                         select new { ID = e, Name = e.ToString() };

            viewModel.PaymentMethodList = new SelectList(values, "Id", "Name");

            //viewModel.ViewWarehouseTo = false;
            //viewModel.ViewSupplier = false;
            //viewModel.ViewDate = false;
            //viewModel.ViewFactur = false;

            return(viewModel);
        }
        public ActionResult Update(MJobType viewModel, FormCollection formCollection)
        {
            try
            {
                _mJobTypeRepository.DbContext.BeginTransaction();

                MJobType mJobTypeToUpdate = _mJobTypeRepository.Get(viewModel.Id);
                TransferFormValuesTo(mJobTypeToUpdate, viewModel);
                mJobTypeToUpdate.ModifiedDate = DateTime.Now;
                mJobTypeToUpdate.ModifiedBy   = User.Identity.Name;
                mJobTypeToUpdate.DataStatus   = EnumDataStatus.Updated.ToString();

                _mJobTypeRepository.Update(mJobTypeToUpdate);

                bool        isSave     = false;
                MAccountRef accountRef = GetAccountRef(mJobTypeToUpdate.Id);
                if (accountRef == null)
                {
                    accountRef = new MAccountRef();
                    accountRef.SetAssignedIdTo(Guid.NewGuid().ToString());
                    accountRef.CreatedDate = DateTime.Now;
                    accountRef.CreatedBy   = User.Identity.Name;
                    accountRef.DataStatus  = EnumDataStatus.New.ToString();
                    isSave = true;
                }
                else
                {
                    accountRef.ModifiedDate = DateTime.Now;
                    accountRef.ModifiedBy   = User.Identity.Name;
                    accountRef.DataStatus   = EnumDataStatus.Updated.ToString();
                }
                accountRef.ReferenceId    = mJobTypeToUpdate.Id;
                accountRef.ReferenceTable = EnumReferenceTable.JobType.ToString();
                accountRef.ReferenceType  = EnumReferenceTable.JobType.ToString();
                accountRef.AccountId      = _mAccountRepository.Get(formCollection["AccountId"]);
                if (isSave)
                {
                    _mAccountRefRepository.Save(accountRef);
                }
                else
                {
                    _mAccountRefRepository.Update(accountRef);
                }
                _mJobTypeRepository.DbContext.CommitChanges();
            }
            catch (Exception e)
            {
                _mJobTypeRepository.DbContext.RollbackTransaction();

                return(Content(e.GetBaseException().Message));
            }

            return(Content("success"));
        }
        public ActionResult Delete(MJobType viewModel, FormCollection formCollection)
        {
            MJobType mJobTypeToDelete = _mJobTypeRepository.Get(viewModel.Id);

            if (mJobTypeToDelete != null)
            {
                _mJobTypeRepository.Delete(mJobTypeToDelete);
            }

            try
            {
                _mJobTypeRepository.DbContext.CommitChanges();
            }
            catch (Exception e)
            {
                _mJobTypeRepository.DbContext.RollbackTransaction();

                return(Content(e.GetBaseException().Message));
            }

            return(Content("success"));
        }
        public ActionResult Insert(MJobType viewModel, FormCollection formCollection)
        {
            try
            {
                _mJobTypeRepository.DbContext.BeginTransaction();

                MJobType mJobTypeToInsert = new MJobType();
                TransferFormValuesTo(mJobTypeToInsert, viewModel);
                mJobTypeToInsert.SetAssignedIdTo(viewModel.Id);
                mJobTypeToInsert.CreatedDate = DateTime.Now;
                mJobTypeToInsert.CreatedBy   = User.Identity.Name;
                mJobTypeToInsert.DataStatus  = EnumDataStatus.New.ToString();

                _mJobTypeRepository.Save(mJobTypeToInsert);

                MAccountRef accountRef = new MAccountRef();
                accountRef.SetAssignedIdTo(Guid.NewGuid().ToString());
                accountRef.ReferenceId    = mJobTypeToInsert.Id;
                accountRef.ReferenceTable = EnumReferenceTable.JobType.ToString();
                accountRef.ReferenceType  = EnumReferenceTable.JobType.ToString();
                accountRef.AccountId      = _mAccountRepository.Get(formCollection["AccountId"]);
                accountRef.CreatedDate    = DateTime.Now;
                accountRef.CreatedBy      = User.Identity.Name;
                accountRef.DataStatus     = EnumDataStatus.New.ToString();
                _mAccountRefRepository.Save(accountRef);
                _mJobTypeRepository.DbContext.CommitChanges();
            }
            catch (Exception e)
            {
                _mJobTypeRepository.DbContext.RollbackTransaction();

                //throw e.GetBaseException();
                return(Content(e.GetBaseException().Message));
            }

            return(Content("success"));
        }
 private static void TransferFormValuesTo(MJobType mJobTypeToUpdate, MJobType mJobTypeFromForm)
 {
     mJobTypeToUpdate.JobTypeName   = mJobTypeFromForm.JobTypeName;
     mJobTypeToUpdate.JobTypeDesc   = mJobTypeFromForm.JobTypeDesc;
     mJobTypeToUpdate.JobTypeStatus = mJobTypeFromForm.JobTypeStatus;
 }