Пример #1
0
        // هتبقي تبع المكتب
        public IActionResult PayBackLoan(decimal price, int BoatID)
        {
            var Boat = _context.Boats.Find(BoatID);

            Boat.DebtsOfLeader -= price;
            LeaderPayback p = new LeaderPayback()
            {
                BoatID = BoatID, Date = TimeNow(), Price = price
            };

            _context.LeaderPaybacks.Add(p);
            Person pp = _context.People.Find(4);

            pp.credit += price;
            _context.SaveChanges();
            return(Json(new { message = "success" }));
        }
        public async Task <IActionResult> SaveRec(int?id, decimal individualSalary, decimal halek, decimal total, decimal expense, string flag, int NumberOfFisherMen, decimal PaymentLeaderDebts)
        {
            var user = await _userManager.GetUserAsync(User);

            var roles = await _userManager.GetRolesAsync(user);

            int PID = 1;

            if (roles.Contains("partner"))
            {
                PID = 2;
            }
            var rec = db.BoatOwnerReciepts.Find(id);
            //Person p = db.People.Find(PID);
            //p.credit += halek; دى بتكون حسابات على ورق لانهم مش بياخدوا فلوس ف ايديهم ..لسه هياخدوه فلوسهم دى لما التجار تسدد
            decimal leaderPaidDebts = 0.0m;
            var     boat            = db.Boats.Find(rec.BoatID);

            if (PaymentLeaderDebts != 0.0m)
            {
                boat.DebtsOfLeader -= PaymentLeaderDebts;
                LeaderPayback l = new LeaderPayback()
                {
                    BoatID = boat.BoatID,
                    Date   = TimeNow(),
                    Price  = PaymentLeaderDebts
                };
                db.LeaderPaybacks.Add(l);
                //p.credit += PaymentLeaderDebts;
                leaderPaidDebts = PaymentLeaderDebts;
            }

            boat.DebtsOfHalek -= halek;

            if (flag == "True") // fishermen number is the same
            {
                var recs = db.BoatOwnerReciepts.Where(c => c.BoatID == boat.BoatID && c.IsCollected == false && c.IsCalculated == false).ToList();
                var sumOfTotalAfterPayment = total - leaderPaidDebts;
                var finalIncome            = 0.0m;
                if (boat.TypeID == 2) //shared boat
                {
                    finalIncome = sumOfTotalAfterPayment / 2;
                    var LeaderSalary = 0.0m;
                    if (NumberOfFisherMen != 0)
                    {
                        LeaderSalary = finalIncome / NumberOfFisherMen;
                    }
                    else
                    {
                        LeaderSalary = finalIncome / 6;
                    }
                    boat.IncomeOfSharedBoat += finalIncome - LeaderSalary;
                    IncomesOfSharedBoat inc = new IncomesOfSharedBoat()
                    {
                        BoatID = boat.BoatID, Date = TimeNow(), Income = finalIncome - LeaderSalary
                    };
                    db.IncomesOfSharedBoats.Add(inc);
                    PaidForBoat paidForBoat = new PaidForBoat()
                    {
                        BoatID            = boat.BoatID,
                        Date              = TimeNow(),
                        Payment           = finalIncome + LeaderSalary,
                        PersonID          = PID,
                        HalekDebtsTillNow = boat.DebtsOfHalek
                    };
                    db.PaidForBoats.Add(paidForBoat);
                    Person pp = db.People.Find(PID);
                    pp.credit -= finalIncome + LeaderSalary;
                    db.SaveChanges();
                }
                else
                {
                    if (expense != 0.0m)
                    {
                        boat.TotalOfExpenses -= expense;
                    }
                    PaidForBoat paidForBoat = new PaidForBoat()
                    {
                        BoatID            = boat.BoatID,
                        Date              = TimeNow(),
                        Payment           = sumOfTotalAfterPayment,
                        PersonID          = PID,
                        HalekDebtsTillNow = boat.DebtsOfHalek
                    };
                    db.PaidForBoats.Add(paidForBoat);
                    Person pp = db.People.Find(PID);
                    pp.credit -= sumOfTotalAfterPayment;
                    db.SaveChanges();
                }

                foreach (var item in recs)
                {
                    item.IsCollected  = true;
                    item.IsCalculated = true;
                }
            }
            else
            {
                rec.PaidFromDebts    = halek;
                rec.TotalAfterPaying = total - leaderPaidDebts;
                rec.IsCalculated     = true;
                db.SaveChanges();
                if (db.BoatOwnerReciepts.Where(c => c.BoatID == boat.BoatID && c.IsCollected == false && c.IsCalculated == false).Count() == 0)//check if last rec
                {
                    var recs = db.BoatOwnerReciepts.Where(c => c.BoatID == boat.BoatID && c.IsCollected == false && c.IsCalculated == true).ToList();
                    var sumOfTotalAfterPayment = recs.Sum(c => c.TotalAfterPaying);

                    var finalIncome = 0.0m;
                    if (boat.TypeID == 2)
                    {
                        finalIncome = sumOfTotalAfterPayment / 2;
                        var LeaderSalary = 0.0m;
                        if (NumberOfFisherMen != 0)
                        {
                            LeaderSalary = finalIncome / NumberOfFisherMen;
                        }
                        else
                        {
                            LeaderSalary = finalIncome / 6;
                        }
                        boat.IncomeOfSharedBoat += finalIncome - LeaderSalary;
                        IncomesOfSharedBoat inc = new IncomesOfSharedBoat()
                        {
                            BoatID = boat.BoatID, Date = TimeNow(), Income = finalIncome - LeaderSalary
                        };
                        db.IncomesOfSharedBoats.Add(inc);
                        PaidForBoat paidForBoat = new PaidForBoat()
                        {
                            BoatID            = boat.BoatID,
                            Date              = TimeNow(),
                            Payment           = finalIncome + LeaderSalary,
                            PersonID          = PID,
                            HalekDebtsTillNow = boat.DebtsOfHalek
                        };
                        db.PaidForBoats.Add(paidForBoat);
                        Person pp = db.People.Find(PID);
                        pp.credit -= finalIncome + LeaderSalary;
                        db.SaveChanges();
                    }
                    else
                    {
                        if (expense != 0.0m)
                        {
                            boat.TotalOfExpenses -= expense;
                        }
                        PaidForBoat paidForBoat = new PaidForBoat()
                        {
                            BoatID            = boat.BoatID,
                            Date              = TimeNow(),
                            Payment           = total - leaderPaidDebts,
                            PersonID          = PID,
                            HalekDebtsTillNow = boat.DebtsOfHalek
                        };
                        db.PaidForBoats.Add(paidForBoat);
                        Person pp = db.People.Find(PID);
                        pp.credit -= total - leaderPaidDebts;
                        db.SaveChanges();
                    }

                    foreach (var item in recs)
                    {
                        item.IsCollected = true;
                    }
                    db.SaveChanges();
                }
                else
                {
                    var finalIncome = 0.0m;
                    if (boat.TypeID == 2)
                    {
                        finalIncome = rec.TotalAfterPaying / 2;
                        var LeaderSalary = 0.0m;
                        if (NumberOfFisherMen != 0)
                        {
                            LeaderSalary = finalIncome / NumberOfFisherMen;
                        }
                        else
                        {
                            LeaderSalary = finalIncome / 6;
                        }

                        PaidForBoat paidForBoat = new PaidForBoat()
                        {
                            BoatID            = boat.BoatID,
                            Date              = TimeNow(),
                            Payment           = finalIncome + LeaderSalary,
                            PersonID          = PID,
                            HalekDebtsTillNow = boat.DebtsOfHalek
                        };
                        db.PaidForBoats.Add(paidForBoat);
                        Person pp = db.People.Find(PID);
                        pp.credit -= finalIncome + LeaderSalary;
                        db.SaveChanges();
                    }
                    else
                    {
                        if (expense != 0.0m)
                        {
                            boat.TotalOfExpenses -= expense;
                        }
                        PaidForBoat paidForBoat = new PaidForBoat()
                        {
                            BoatID            = boat.BoatID,
                            Date              = TimeNow(),
                            Payment           = total - leaderPaidDebts,
                            PersonID          = PID,
                            HalekDebtsTillNow = boat.DebtsOfHalek
                        };
                        db.PaidForBoats.Add(paidForBoat);
                        Person pp = db.People.Find(PID);
                        pp.credit -= total - leaderPaidDebts;
                        db.SaveChanges();
                    }
                }
            }
            db.SaveChanges();
            return(Json(new { message = "success", current = boat.DebtsOfHalek, income = boat.IncomeOfSharedBoat, cexpense = boat.TotalOfExpenses, leaderdebts = boat.DebtsOfLeader }));
        }