public virtual IActionResult _ContractAcceptanceAdd(int UnitId)
        {
            var model = new ContractAcceptanceModel()
            {
                UnitId = UnitId,
                TypeId = (int)ContractAcceptancesType.TamUng,
            };

            _contractModelFactory.PrepareContractAcceptanceModel(model, null);
            var Contracts = _contractService.getAllContractbyUnitId(UnitId);

            if (Contracts != null)
            {
                model.AvailableContract = Contracts.Select(c => new SelectListItem
                {
                    Value = c.Id.ToString(),
                    Text  = c.Name,
                }).ToList();
                model.AvailableContract.Insert(0, new SelectListItem
                {
                    Text  = "---Chọn hợp đồng---",
                    Value = "0"
                });
            }
            return(PartialView(model));
        }
        public virtual IActionResult Create(Guid acceptanceGuid)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageAcceptanceCreate))
            {
                return(AccessDeniedView());
            }
            var model = new ContractAcceptanceModel();
            var item  = _contractService.GetContractAcceptanceByGuid(acceptanceGuid);

            if (item != null)
            {
                model             = item.ToModel <ContractAcceptanceModel>();
                model.TotalAmount = item.TotalAmount.ToVNStringNumber();
            }
            _contractModelFactory.PrepareContracAcceptanceNoiBoModel(model, null);
            if (model.Id > 0)
            {
                var lstContractAcceptanceSub = _contractService.GetAllContractAcceptanceSubByAcceptanceNoiBoId(item.Id);
                var lstContractId            = lstContractAcceptanceSub.Select(c => c.ContractId).Distinct();
                model.ListContractId = String.Join(",", lstContractId.ToList());
                //get list file
                var ListFileId = _contractService.GetContractFiles(TypeId: (int)ContractFileType.AcceptanceNoiBo, EntityId: item.Id);
                model.WorkFileIds = String.Join(",", ListFileId.Select(c => c.FileId).ToList());
            }
            return(View(model));
        }
        public ContractAcceptanceModel prepareContractAcceptancebyTask(Task task)
        {
            var model = new ContractAcceptanceModel
            {
                TaskName = task.Name
            };

            model.TaskId             = task.Id;
            model.ContractId         = task.ContractId;
            model.TaskTotalMoney     = task.TotalMoney;
            model.TaskTotalMoneyText = _priceFormatter.FormatPrice(task.TotalMoney.GetValueOrDefault(0), true, task.currency);
            //so da tam ung
            var acceps = _contractService.getAllContractAcceptance(ContractId: task.ContractId, TaskId: task.Id, TypeId: (int)ContractAcceptancesType.TamUng).ToList();

            model.ToltalAmountAdvanced     = acceps.Sum(c => (Int64)c.TotalAmount);
            model.SumToltalAmount          = (Int64)task.TotalMoney;
            model.ToltalAmountAdvancedText = _priceFormatter.FormatPrice(model.ToltalAmountAdvanced, true, task.currency);
            return(model);
        }
        public virtual IActionResult _AcceptanceContracts(int UnitId, string ApprovalDateString)
        {
            var model = new ContractAcceptanceModel();

            if (ApprovalDateString == null)
            {
                ApprovalDateString = DateTime.Now.ToString("dd/MM/yyyy");
            }
            var Contracts = _contractService.GetAllContractPaymentAcceptanceByUnitId(UnitId, ApprovalDateString);

            model.listContractModel = Contracts.Select(c => {
                var m = new ContractModel
                {
                    Name             = c.Name,
                    Id               = c.Id,
                    ConstructionName = _constructionService.GetConstructionById((int)c.ConstructionId).Name
                };
                return(m);
            }).ToList();
            return(PartialView(model));
        }
        public ContractAcceptanceModel PrepareContractAcceptance(ContractAcceptance item)
        {
            var mapping = _contractService.GetAllContractAcceptanceTaskMapping(AcepptanceId: item.Id).FirstOrDefault();
            var task    = _workTaskService.GetTaskById(mapping.TaskId);
            var model   = new ContractAcceptanceModel
            {
                TaskName = task.Name
            };

            model.TaskId             = task.Id;
            model.ContractId         = task.ContractId;
            model.TaskTotalMoneyText = _priceFormatter.FormatPrice(task.TotalMoney.GetValueOrDefault(0), true, task.currency);
            //so da tam ung
            var acceps = _contractService.getAllContractAcceptance(ContractId: task.ContractId, TaskId: task.Id, TypeId: (int)ContractAcceptancesType.TamUng).Where(c => c.Id != item.Id).ToList();

            model.ToltalAmountAdvanced = acceps.Sum(c => (Int64)c.TotalAmount);
            model.SumToltalAmount      = (Int64)task.TotalMoney;
            model.TotalAmount          = item.TotalAmount.ToVNStringNumber();
            model.Ratio = item.Ratio * 100;
            model.ToltalAmountAdvancedText = _priceFormatter.FormatPrice(model.ToltalAmountAdvanced, true, task.currency);
            return(model);
        }
        public virtual IActionResult Create(ContractAcceptanceModel model)
        {
            var noti = "admin.common.Added";
            var item = new ContractAcceptance();

            if (ModelState.IsValid && model.listAcceptanceSub.Count > 0)
            {
                if (model.Id > 0)
                {
                    item = _contractService.getContractAcceptancebyId(model.Id);
                    _contractModelFactory.PrepareContractAcceptanceNoiboForUnit(model, item);
                    //remove listAcceptanceSub cu
                    _contractService.DeleteContractAcceptanceSubByAcceptanceId(AccepId: model.Id, TypeId: (int)ContractAcceptancesType.NoiBo);
                }
                // add ContractAcceptanceNoibo
                _contractModelFactory.PrepareContractAcceptanceNoiboForUnit(model, item);
                if (model.Id > 0)
                {
                    _contractService.UpdateContractAcceptance(item);
                    // Insert ContractLog
                    var contractLog = new ContractLog()
                    {
                        ContractId   = item.Id,
                        CreatedDate  = DateTime.Now,
                        CreatorId    = _workContext.CurrentCustomer.Id,
                        ContractData = item.ToModel <ContractAcceptanceModel>().toStringJson()
                    };
                    _contractLogService.InsertContractLog(contractLog, "Sửa nghiệm thu nội bộ: " + item.Name);
                    noti = "admin.common.updated";
                }
                else
                {
                    _contractService.InsertContractAcceptance(item);
                    // Insert ContractLog
                    var contractLog = new ContractLog()
                    {
                        ContractId   = item.Id,
                        CreatedDate  = DateTime.Now,
                        CreatorId    = _workContext.CurrentCustomer.Id,
                        ContractData = item.ToModel <ContractAcceptanceModel>().toStringJson()
                    };
                    _contractLogService.InsertContractLog(contractLog, "Thêm mới nghiệm thu nội bộ: " + item.Name);
                }
                //var _cas = new ContractAcceptanceSub();
                foreach (ContractAcceptanceSubModel _casModel in model.listAcceptanceSub)
                {
                    _casModel.Description = item.Name;
                    var _cas = _contractModelFactory.PrepareContractAcceptanceSubByTask(_casModel, null);
                    _cas.AcceptanceId = item.Id;
                    _contractService.InsertContractAcceptionSub(_cas);
                    if (model.SelectedListFileId.Count > 0)
                    {
                        foreach (int FileId in model.SelectedListFileId)
                        {
                            var contractFile = new ContractFile
                            {
                                ContractId = _cas.ContractId,
                                FileId     = FileId,
                                TypeId     = (int)ContractFileType.AcceptanceNoiBo,
                                EntityId   = item.Id.ToString(),
                            };
                            _contractService.InsertContractFile(contractFile);
                        }
                    }
                }
                return(JsonSuccessMessage(_localizationService.GetResource(noti)));
            }
            else
            {
                var list = ModelState.Values.Where(c => c.Errors.Count > 0).ToList();
                return(JsonErrorMessage("Error", list));
            }
        }