/// <summary>
        /// Delete an entity.
        /// </summary>
        /// <param name="model"></param>
        public void Delete(AssetInventoryViewModel model)
        {
            var entity = model.ToEntity();

            this._AssetInventorysRepository.Delete(entity);

            #region Commit Changes
            this._unitOfWork.Commit();
            #endregion
        }
        public ActionResult Submit(AssetInventoryViewModel model)
        {
            string action = Request["Submit"];

            if (action == "close")
            {
                if (model.InventoryId > 0)
                {
                    this.AssetInventoryService.UpdateAssetInventoryStatus(model.InventoryId, AssetInventoryStatus.Closed);
                }
            }
            else if (action == "open")
            {
                if (model.InventoryId > 0)
                {
                    this.AssetInventoryService.UpdateAssetInventoryStatus(model.InventoryId, AssetInventoryStatus.Open);
                }
            }
            else if (action == "exportNoScanInfo")
            {
                //导出某次盘点未扫描的资产信息
                try
                {
                    var assetInventory = this.AssetInventoryService.GetAssetInventory(model.InventoryId);
                    var scanedAssetIds = new List <int>();
                    if (assetInventory != null && assetInventory.AssetInventoryRecords != null)
                    {
                        scanedAssetIds = assetInventory.AssetInventoryRecords.Where(it => it.AssetId.HasValue).Select(it => it.AssetId.Value).Distinct().ToList();
                    }
                    var workbook   = new Aspose.Cells.Workbook();
                    var descriptor = new ExportExcel <AssetModel>();

                    AssetSearchModel search = new AssetSearchModel()
                    {
                        BarCode  = null,
                        TypeId   = null,
                        BuyDate  = null,
                        UserName = null
                    };
                    var assets = this.AssetService.List(search).Where(it => !scanedAssetIds.Contains(it.Id)).ToList();
                    descriptor.FillAssetData(assets, workbook, 0);

                    var    ms       = new MemoryStream();
                    string fileName = assetInventory.Title + "(暂未扫描的资产信息)-" + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx";
                    workbook.Save(ms, Aspose.Cells.SaveFormat.Xlsx);
                    return(File(ms.ToArray(), "application/vnd.ms-excel", fileName));
                }
                catch (Exception ex)
                {
                    ViewBag.Message = ex.Message;
                }
            }
            return(RedirectToAction("Index"));
        }
        /// <summary>
        /// Throw an exception if name is exist.
        /// </summary>
        /// <param name="model">AssetInventory view model</param>
        public void ThrowExceptionIfExist(AssetInventoryViewModel model)
        {
            //ConditionFilter<AssetInventory, long> condition = new ConditionFilter<AssetInventory, long>
            //{
            //    Query = (entity =>
            //        entity.Name == model.Name &&
            //        entity.Id != model.Id)
            //};
            //var existEntity = this._AssetInventorysRepository.Get(condition).FirstOrDefault();

            //if (existEntity != null)
            //    throw new ItemAlreadyExistException();
        }
        /// <summary>
        /// Update an entity.
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public AssetInventoryViewModel Update(AssetInventoryViewModel model)
        {
            this.ThrowExceptionIfExist(model);

            var entity = model.ToEntity();

            entity = this._AssetInventorysRepository.Update(entity);

            #region Commit Changes
            this._unitOfWork.Commit();
            #endregion

            model = entity.ToModel();
            return(model);
        }
        /// <summary>
        /// Add an entity.
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public AssetInventoryViewModel Add(AssetInventoryViewModel model)
        {
            this.ThrowExceptionIfExist(model);

            var entity = model.ToEntity();

            entity = this._AssetInventorysRepository.Add(entity);

            var entityEn = new AssetInventory
            {
                Language    = Language.English,
                Description = model.DescriptionEn,
            };

            entity.ChildTranslatedAssetInventorys.Add(entityEn);
            this._AssetInventorysRepository.Add(entityEn);

            var entityAr = new AssetInventory
            {
                Language    = Language.Arabic,
                Description = model.DescriptionAr
            };

            entity.ChildTranslatedAssetInventorys.Add(entityAr);
            this._AssetInventorysRepository.Add(entityAr);

            var details = entity.AssetInventoryDetails;

            this._AssetInventoryDetailsRepository.Add(details);

            #region Commit Changes
            this._unitOfWork.Commit();
            #endregion

            model = entity.ToModel();
            return(model);
        }