Пример #1
0
        async public Task <IHttpActionResult> Update(UpdateBilling billingQuaterly)
        {
            var SpecificBill = await Db.BillingQuaterly.SingleOrDefaultAsync(e => e.Id == billingQuaterly.Id);

            SpecificBill.AmountPaid       = SpecificBill.AmountPaid + billingQuaterly.AmountPaid;
            SpecificBill.Tax              = SpecificBill.Tax + billingQuaterly.Tax;
            SpecificBill.RemainingArrears = SpecificBill.TotalAmountToPay - SpecificBill.AmountPaid - SpecificBill.Tax;

            var billing = await Db.BillingQuaterly.SingleOrDefaultAsync(e => e.Id == billingQuaterly.Id);

            var project = await Db.Projects.SingleOrDefaultAsync(i => i.Id == billing.ProjectId);

            var comissionEmployee = (await Db.ProjectComission.SingleOrDefaultAsync(e => e.Id == billing.ProjectComissionId)).EmployeeId;

            var billHistory = new QuaterlyHistoryDetails()
            {
                BillingQuaterlyId = billingQuaterly.Id,
                AmountAdded       = billingQuaterly.AmountPaid,
                TaxAdded          = billingQuaterly.Tax,
                Date = DateTime.Now.Date
            };

            var comissionAdd = new ProjectComission()
            {
                EmployeeId      = comissionEmployee,
                Date            = DateTime.Now.Date,
                ComissionAmount = (billingQuaterly.AmountPaid * project.ComissionPercentage) / 100,
                ProjectId       = project.Id
            };


            Db.ProjectComission.Add(comissionAdd);
            Db.QuaterlyHistoryDetails.Add(billHistory);
            await Db.SaveChangesAsync();

            return(Ok());

            //var billing = await Db.BillingQuaterly.SingleOrDefaultAsync(e => e.Id == billingQuaterly.Id);

            //var comissionProjectUpdate = await Db.ProjectComission.SingleOrDefaultAsync(e => e.Id == billing.ProjectComissionId);

            //comissionProjectUpdate.Date = DateTime.Now.Date;

            //var projectComissionPercentage = (await Db.Projects.SingleOrDefaultAsync(i => i.Id == billing.ProjectId)).ComissionPercentage;

            //comissionProjectUpdate.ComissionAmount = (billingQuaterly.AmountPaid * projectComissionPercentage) / 100;

            //await Db.SaveChangesAsync();

            //return Ok();
        }
        async public Task <IHttpActionResult> Get(int Id)
        {
            var LastToDate = Db.BillingQuaterly.ToList().LastOrDefault(e => e.ProjectId == Id);

            if (LastToDate.To.Date <= DateTime.Now.Date)
            {
                LastToDate.Editable = false;

                var projectAmountToPay = Db.Projects.SingleOrDefault(p => p.Id == Id).BillingAmount;
                var billingQuaterly    = new BillingQuaterly()
                {
                    From             = LastToDate.To.Date,
                    To               = LastToDate.To.Date.AddMonths(3),
                    ProjectId        = Id,
                    Editable         = true,
                    Arrears          = LastToDate.RemainingArrears,
                    QuaterlyAmount   = projectAmountToPay,
                    TotalAmountToPay = LastToDate.RemainingArrears + projectAmountToPay,
                    RemainingArrears = LastToDate.RemainingArrears + projectAmountToPay - 0
                };

                Db.BillingQuaterly.Add(billingQuaterly);

                var comissionEmployee = (await Db.ProjectComission.SingleOrDefaultAsync(p => p.Id == Id)).EmployeeId;
                var comissionQuaterly = new ProjectComission()
                {
                    EmployeeId      = comissionEmployee,
                    Date            = LastToDate.To.Date,
                    ComissionAmount = 0,
                    ProjectId       = Id
                };
                Db.ProjectComission.Add(comissionQuaterly);
                await Db.SaveChangesAsync();
            }
            var quaterlyHistory = await Db.BillingQuaterly.Where(i => i.ProjectId == Id).ToListAsync();

            return(Ok(quaterlyHistory));
        }