public async Task <bool> addSlice(SliceAssetDetailDto asset)
        {
            SliceAsset assetModel = new SliceAsset();

            assetModel.AssetId          = asset.AssetId;
            assetModel.Quantity         = asset.Quantity;
            assetModel.Description      = asset.Description;
            assetModel.TimeAsset        = asset.TimeAsset;
            assetModel.MultiplierInTime = asset.MultiplierInTime;
            assetModel.AccountId        = asset.AccountId;
            assetModel.ProjectId        = asset.ProjectId;
            assetModel.TypeAssetId      = asset.TypeAssetId;
            assetModel.TermId           = asset.TermId;
            assetModel.AssetStatus      = Status.ACTIVE;
            assetModel.AssetSlice       = asset.AssetSlice;
            assetModel.CompanyId        = asset.CompanyId;
            assetModel.CashPerSlice     = asset.CashPerSlice;
            assetModel.SalaryGapInTime  = asset.SalaryGapInTime;


            _context.SliceAssets.Add(assetModel);
            try
            {
                await _context.SaveChangesAsync();

                return(true);
            }
            catch (DbUpdateException e)
            {
                Debug.WriteLine(e.InnerException.Message);
                throw;
            }
        }
        public async Task <ActionResult> CreateProject(String companyID, String shID, SliceAssetDetailDto asset)
        {
            try
            {
                bool check = await _slice.addSliceSV(companyID, shID, asset);

                if (check)
                {
                    return(NoContent());
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (DbUpdateException)
            {
                return(Conflict());
            }
        }
Exemple #3
0
        public async Task <bool> addSliceSV(String companyID, String userID, SliceAssetDetailDto asset)
        {
            string lastid = await _sliceRepository.getLastIDAsset(companyID);

            string[] splitString = lastid.Split(' ');

            SalaryGapDto salary = await _shRepository.GetSalaryGap(userID, companyID);

            double?SalaryGap = salary.ShmarketSalary - salary.Shsalary;

            double cashPerSlice = await _cpRepository.GetMoneyPerSlice(companyID);


            if (lastid == null || splitString.Length == 1)
            {
                asset.AssetId = companyID + " Asset1";
            }
            else
            {
                Regex re     = new Regex(@"([a-zA-Z]+)(\d+)");
                Match result = re.Match(splitString[1]);

                string alphaPart  = result.Groups[1].Value;
                string numberPart = result.Groups[2].Value;

                int numberProject = Int32.Parse(numberPart) + 1;

                asset.AssetId = splitString[0] + " " + alphaPart + numberProject;
            }

            String multiplier = await _typeRepository.GetMultiplierById(Convert.ToInt32(asset.TypeAssetId));

            int multiplierInTime;

            if (multiplier == "NC")
            {
                multiplierInTime = await _cpRepository.GetNonCashMP(companyID);
            }
            else
            {
                multiplierInTime = await _cpRepository.GetCashMP(companyID);
            }

            asset.MultiplierInTime = multiplierInTime;

            asset.SalaryGapInTime = (double)SalaryGap;
            asset.CashPerSlice    = cashPerSlice;

            switch (asset.TypeAssetId)
            {
            case 1:
            {
                double ManMonth = asset.Quantity / 160;
                double Slice    = ManMonth * Convert.ToDouble(SalaryGap) / cashPerSlice * multiplierInTime;
                asset.AssetSlice = Slice;
                break;
            }

            case 2:
            {
                double Slice = asset.Quantity / cashPerSlice * multiplierInTime;
                asset.AssetSlice = Slice;
                break;
            }

            case 3:
            {
                double Slice = asset.Quantity / 500000 * multiplierInTime;
                asset.AssetSlice = Slice;
                break;
            }

            case 4:
            {
                double Slice = asset.Quantity / 500000;
                asset.AssetSlice = Slice;
                break;
            }
            }
            ;

            try
            {
                await _sliceRepository.addSlice(asset);

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }