public async Task <IActionResult> Edit(int id, [Bind("EmployeeID,FirstName,LastName,BirthDate,Position,EmailAddress,Telephone,BusinessTelephone,AddressLine1,AddressLine2,City,State,Country,PostalCode")] vwBusinessContactDetail vwBusinessContactDetail)
        {
            if (id != vwBusinessContactDetail.EmployeeID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                var model = vwBusinessContactDetail;

                try
                {
                    var vwPosition   = _context.vwPositions.FirstOrDefault(i => i.Position == model.Position);
                    int positionID   = vwPosition.PositionID;
                    int departmentID = vwPosition.DepartmentID;

                    Employee employee = _context.Employees.Find(id);
                    employee.FirstName  = model.FirstName;
                    employee.LastName   = model.LastName;
                    employee.BirthDate  = model.BirthDate;
                    employee.PositionID = positionID;
                    _context.Employees.Update(employee);

                    BusinessContact contact = _context.BusinessContacts.Find(employee.BusinessContactID);
                    contact.EmailAddress      = model.EmailAddress;
                    contact.Telephone         = model.Telephone;
                    contact.BusinessTelephone = model.BusinessTelephone;
                    _context.BusinessContacts.Update(contact);

                    Address address = _context.Addresses.Find(contact.AddressID);
                    address.AddressLine1 = model.AddressLine1;
                    address.AddressLine2 = model.AddressLine2;
                    address.City         = model.City;
                    address.State        = model.State;
                    address.Country      = model.Country;
                    address.PostalCode   = model.PostalCode;
                    _context.Addresses.Update(address);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!vwBusinessContactDetailExists(vwBusinessContactDetail.EmployeeID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }

            ViewData["Position"] = new SelectList(_context.Positions, "Name", "Name", vwBusinessContactDetail.Position);
            return(View(vwBusinessContactDetail));
        }
 public EditEmployee(int id)
 {
     _positions   = _context.Positions.OrderBy(i => i.PositionID);
     _departments = _context.Departments.OrderBy(i => i.DepartmentID);
     _employeeID  = id;
     _data        = _context.vwBusinessContactDetails.Find(_employeeID);
     InitializeComponent();
     InitializeDropDownList();
     InitializeFields();
 }
        public async Task <IActionResult> Create([Bind("EmployeeID,FirstName,LastName,BirthDate,Position,EmailAddress,Telephone,BusinessTelephone,AddressLine1,AddressLine2,City,State,Country,PostalCode")] vwBusinessContactDetail vwBusinessContactDetail)
        {
            if (ModelState.IsValid)
            {
                var model        = vwBusinessContactDetail;
                var vwPosition   = _context.vwPositions.FirstOrDefault(i => i.Position == model.Position);
                int positionID   = vwPosition.PositionID;
                int departmentID = vwPosition.DepartmentID;

                Address address = new Address
                {
                    AddressLine1 = model.AddressLine1,
                    AddressLine2 = model.AddressLine2,
                    City         = model.City,
                    State        = model.State,
                    Country      = model.Country,
                    PostalCode   = model.PostalCode
                };
                _context.Addresses.Add(address);
                _context.SaveChanges();
                int addressID = _context.Addresses.Select(i => i.AddressID).Max();

                BusinessContact contact = new BusinessContact
                {
                    EmailAddress      = model.EmailAddress,
                    Telephone         = model.Telephone,
                    BusinessTelephone = model.BusinessTelephone,
                    AddressID         = addressID
                };
                _context.BusinessContacts.Add(contact);
                _context.SaveChanges();
                int contactID = _context.BusinessContacts.Select(i => i.BusinessContactID).Max();

                Employee employee = new Employee()
                {
                    FirstName = model.FirstName,
                    LastName  = model.LastName,
                    BirthDate = model.BirthDate,
                    NationalInsuranceNumber = "c6:8a:24:1f:f7:25",
                    HireDate          = DateTime.Now,
                    PositionID        = positionID,
                    BusinessContactID = contactID
                };
                _context.Employees.Add(employee);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            ViewData["Position"] = new SelectList(_context.Positions, "Name", "Name", vwBusinessContactDetail.Position);
            return(View(vwBusinessContactDetail));
        }