public async Task <IActionResult> Create(BoatVM model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.GetUserAsync(User);

                var roles = await _userManager.GetRolesAsync(user);

                int PID = 1;
                if (roles.Contains("partner"))
                {
                    PID = 2;
                }
                model.BoatImage = "default.png";
                if (model.File != null)
                {
                    string uploads  = Path.Combine(_hosting.WebRootPath, "img");
                    string fullPath = Path.Combine(uploads, model.File.FileName);
                    model.File.CopyTo(new FileStream(fullPath, FileMode.Create));
                    model.BoatImage = model.File.FileName;
                }
                Boat boat = new Boat()
                {
                    BoatName          = model.BoatName,
                    TypeID            = model.TypeID,
                    BoatImage         = model.BoatImage,
                    BoatLeader        = model.BoatLeader,
                    BoatLicenseNumber = model.BoatLicenseNumber,
                    DebtsOfHalek      = model.DebtsOfHalek,
                    // DebtsOfMulfunction = model.DebtsOfMulfunction,
                    BoatNumber          = model.BoatNumber,
                    DebtsOfStartingWork = model.DebtsOfStartingWork
                    ,
                    IsActive = true
                };
                db.Boats.Add(boat);
                if (model.chkBoatStatus == true)
                {
                    Person p = db.People.Find(PID);
                    p.credit -= model.DebtsOfStartingWork;
                }

                await db.SaveChangesAsync();

                //-----------------------------------------------------------------------------------------------------------------------------------------
                //اضافة مبدئيه لمع حدوث اكسبشن مع احمدفتح الله ويجب على المالك تعديل بيانات السرحه قبل حساب فاتورة المركب
                //وسيتم تعديل التاريخ بعد عمل فاتوره المركب ليصبح بنفس تاريخ عمل الفاتوره
                Sarha s = new Sarha()
                {
                    BoatID = boat.BoatID, IsFinished = false, NumberOfBoxes = 0, NumberOfFishermen = 6, DateOfSarha = TimeNow()
                };
                db.Sarhas.Add(s);
                await db.SaveChangesAsync();

                //------------------------------------------------------------------------------------------------------------------------------------------
                return(RedirectToAction("ActiveBoats"));
            }
            ViewBag.Types = new SelectList(await db.BoatTypes.ToListAsync(), "TypeID", "TypeName", model.TypeID);
            return(View(model));
        }
        public IActionResult Edit(int?id)
        {
            Boat model = db.Boats.Find(id);

            BoatVM boat = new BoatVM()
            {
                BoatID            = model.BoatID,
                BoatName          = model.BoatName,
                TypeID            = model.TypeID,
                BoatImage         = model.BoatImage,
                BoatLeader        = model.BoatLeader,
                BoatLicenseNumber = model.BoatLicenseNumber,
                DebtsOfHalek      = model.DebtsOfHalek,
                // DebtsOfMulfunction = model.DebtsOfMulfunction,
                BoatNumber          = model.BoatNumber,
                DebtsOfStartingWork = model.DebtsOfStartingWork,
            };

            ViewBag.Types = new SelectList(db.BoatTypes.ToList(), "TypeID", "TypeName", model.TypeID);
            return(View(boat));
        }
        public async Task <IActionResult> Edit(BoatVM model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.GetUserAsync(User);

                var roles = await _userManager.GetRolesAsync(user);

                int PID = 1;
                if (roles.Contains("partner"))
                {
                    PID = 2;
                }

                if (model.File != null)
                {
                    string uploads  = Path.Combine(_hosting.WebRootPath, "img");
                    string fullPath = Path.Combine(uploads, model.File.FileName);
                    model.File.CopyTo(new FileStream(fullPath, FileMode.Create));
                    model.BoatImage = model.File.FileName;
                }
                var BoatBeforeUpdate = db.Boats.Find(model.BoatID);//.DebtsOfStartingWork;
                if (BoatBeforeUpdate != null)
                {
                    db.Entry(BoatBeforeUpdate).State = EntityState.Detached;
                }
                Boat boat = new Boat()
                {
                    BoatID            = model.BoatID,
                    BoatName          = model.BoatName,
                    TypeID            = model.TypeID,
                    BoatImage         = model.BoatImage,
                    BoatLeader        = model.BoatLeader,
                    BoatLicenseNumber = model.BoatLicenseNumber,
                    DebtsOfHalek      = model.DebtsOfHalek,
                    // DebtsOfMulfunction = model.DebtsOfMulfunction,
                    BoatNumber          = model.BoatNumber,
                    DebtsOfStartingWork = model.DebtsOfStartingWork,
                    IsActive            = BoatBeforeUpdate.IsActive,
                    TotalOfExpenses     = BoatBeforeUpdate.TotalOfExpenses,
                    LeaderLoans         = BoatBeforeUpdate.LeaderLoans,
                    LeaderPaybacks      = BoatBeforeUpdate.LeaderPaybacks,
                    IncomeOfSharedBoat  = BoatBeforeUpdate.IncomeOfSharedBoat
                };
                db.Entry(boat).State = EntityState.Modified;
                if (boat.DebtsOfStartingWork != BoatBeforeUpdate.DebtsOfStartingWork)
                {
                    Person p = db.People.Find(PID);
                    if (boat.DebtsOfStartingWork > BoatBeforeUpdate.DebtsOfStartingWork)
                    {
                        p.credit -= boat.DebtsOfStartingWork - BoatBeforeUpdate.DebtsOfStartingWork;
                    }
                    else
                    {
                        p.credit += BoatBeforeUpdate.DebtsOfStartingWork - boat.DebtsOfStartingWork;
                    }
                }
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            ViewBag.Types = new SelectList(await db.BoatTypes.ToListAsync(), "TypeID", "TypeName", model.TypeID);
            return(View(model));
        }