public async Task <IActionResult> Layoffs(int?id)
        {
            if (id != null)
            {
                TableHistoryOfAppointments historyOfAppointments = await _context.TableHistoryOfAppointments.FirstOrDefaultAsync(p => p.HistoryOfAppointmentsId == id);

                if (historyOfAppointments.DateOfDismissal == null)
                {
                    HistoryOfAppointmentsViewModel model = new HistoryOfAppointmentsViewModel
                    {
                        HistoryOfAppointmentsId   = historyOfAppointments.HistoryOfAppointmentsId,
                        DateOfAppointment         = historyOfAppointments.DateOfAppointment,
                        DateOfDismissal           = historyOfAppointments.DateOfDismissal,
                        TablePositionId           = historyOfAppointments.TablePositionId,
                        EmployeeRegistrationLogId = historyOfAppointments.EmployeeRegistrationLogId,
                        TheReasonForTheDismissal  = historyOfAppointments.TheReasonForTheDismissal
                    };
                    return(View(model));
                }
                else
                {
                    return(RedirectToAction("Index"));
                }
            }
            return(NotFound());
        }
        public async Task <IActionResult> Create(HistoryOfAppointmentsViewModel model)
        {
            try
            {
                var tableposition = await _context.TablePosition.FirstOrDefaultAsync(p => p.TablePositionId == model.TablePositionId);

                if (tableposition.CountPosition > 0)
                {
                    if (ModelState.IsValid)
                    {
                        TableHistoryOfAppointments historyofappointments = new TableHistoryOfAppointments
                        {
                            DateOfAppointment         = DateTime.Now,
                            TablePositionId           = model.TablePositionId,
                            EmployeeRegistrationLogId = model.EmployeeRegistrationLogId
                        };
                        tableposition.CountPosition = tableposition.CountPosition - 1;
                        _context.TablePosition.Update(tableposition);
                        _context.TableHistoryOfAppointments.Add(historyofappointments);
                        await _context.SaveChangesAsync();

                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        int TableOrganizations = _context.TableOrganizations.Include(i => i.users).FirstOrDefault
                                                     (i => User.Identity.Name == i.users.UserName).TableOrganizationsId;
                        var position = await _context.TablePosition
                                       .Include(i => i.Position)
                                       .Where(i => i.TableOrganizationsId == TableOrganizations).ToListAsync();

                        var employees = await _context.employeeRegistrationLogs
                                        .Include(i => i.Worker)
                                        .Include(i => i.Organizations)
                                        .Where(i => i.TableOrganizationsId == TableOrganizations).ToListAsync();

                        HistoryOfAppointmentsViewModel modelResult = new HistoryOfAppointmentsViewModel
                        {
                            employeeRegistrationLogs = employees,
                            positions = position,
                        };
                        return(View(modelResult));
                    }
                }
                else
                {
                    return(RedirectToAction("Create"));
                }
            }
            catch
            {
                return(RedirectToAction("Create"));
            }
        }
        public async Task <IActionResult> Layoffs(HistoryOfAppointmentsViewModel model)
        {
            TableHistoryOfAppointments historyOfAppointments = await _context.TableHistoryOfAppointments.FirstOrDefaultAsync(p => p.HistoryOfAppointmentsId == model.HistoryOfAppointmentsId);

            var tableposition = await _context.TablePosition.FirstOrDefaultAsync(p => p.TablePositionId == historyOfAppointments.TablePositionId);

            tableposition.CountPosition = tableposition.CountPosition + 1;
            historyOfAppointments.TheReasonForTheDismissal = model.GroundsForDismissal.ToString();
            historyOfAppointments.DateOfDismissal          = DateTime.Now;
            _context.TableHistoryOfAppointments.Update(historyOfAppointments);
            _context.TablePosition.Update(tableposition);
            await _context.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> Create()
        {
            int TableOrganizations = _context.TableOrganizations.Include(i => i.users).FirstOrDefault
                                         (i => User.Identity.Name == i.users.UserName).TableOrganizationsId;

            var employees = await _context.employeeRegistrationLogs
                            .Include(i => i.Worker)
                            .OrderBy(i => i.Worker.Surname)
                            .Where(i => i.TableOrganizationsId == TableOrganizations).ToListAsync();

            var position = await _context.TablePosition
                           .Include(i => i.Position)
                           .OrderBy(i => i.Position.JobTitle)
                           .Where(i => i.TableOrganizationsId == TableOrganizations).ToListAsync();

            var historyofappointments = _context.TableHistoryOfAppointments
                                        .Include(p => p.Position)
                                        .Include(p => p.EmployeeRegistrationLog)
                                        .Include(p => p.EmployeeRegistrationLog.Worker)
                                        .Include(p => p.Position.Position)
                                        .Where(p => p.EmployeeRegistrationLog.TableOrganizationsId == TableOrganizations)
                                        .Where(p => p.DateOfDismissal == null);

            foreach (var item in historyofappointments)
            {
                foreach (var itememployees in employees)
                {
                    if (item.EmployeeRegistrationLogId == itememployees.EmployeeRegistrationId)
                    {
                        employees.Remove(itememployees);
                        break;
                    }
                }
            }
            HistoryOfAppointmentsViewModel model = new HistoryOfAppointmentsViewModel
            {
                employeeRegistrationLogs = employees,
                positions = position,
            }
            ;

            return(View(model));
        }