Ejemplo n.º 1
0
 /// <summary>
 ///  Create entity from web model
 /// </summary>
 public static DomainModels.EmpJobProg CreateFrom(this EmpJobProg source)
 {
     return(new DomainModels.EmpJobProg
     {
         EmpJobProgId = source.EmpJobProgId,
         EmployeeId = source.EmployeeId,
         WorkplaceId = source.WorkplaceId,
         DesignationId = source.DesignationId,
         DesigStDt = source.DesigStDt,
         DesigEndDt = source.DesigEndDt,
     });
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Add/Edit Employee
        /// </summary>
        /// <param name="employee"></param>
        /// <returns></returns>
        public Employee SaveEmployee(Employee employee)
        {
            Employee empDbVersion = employeeRepository.Find(employee.EmployeeId);

            #region Add
            if (empDbVersion == null)
            {
                employee.UserDomainKey    = employeeRepository.UserDomainKey;
                employee.IsActive         = true;
                employee.IsReadOnly       = employee.IsPrivate = employee.IsDeleted = false;
                employee.RecLastUpdatedDt = employee.RecCreatedDt = DateTime.Now;
                employee.RecLastUpdatedBy = employee.RecCreatedBy = employeeRepository.LoggedInUserIdentity;
                employee.RowVersion       = 0;

                //Job Info
                employee.EmpJobInfo.UserDomainKey    = employeeRepository.UserDomainKey;
                employee.EmpJobInfo.IsActive         = true;
                employee.EmpJobInfo.IsReadOnly       = employee.EmpJobInfo.IsPrivate = employee.EmpJobInfo.IsDeleted = false;
                employee.EmpJobInfo.RecLastUpdatedDt = employee.EmpJobInfo.RecCreatedDt = DateTime.Now;
                employee.EmpJobInfo.RecLastUpdatedBy = employee.EmpJobInfo.RecCreatedBy = employeeRepository.LoggedInUserIdentity;

                //Address List
                if (employee.Addresses != null)
                {
                    foreach (var item in employee.Addresses)
                    {
                        item.UserDomainKey    = employeeRepository.UserDomainKey;
                        item.IsActive         = true;
                        item.IsReadOnly       = item.IsPrivate = item.IsDeleted = false;
                        item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                        item.RecLastUpdatedBy = item.RecCreatedBy = employeeRepository.LoggedInUserIdentity;
                        item.RowVersion       = 0;
                    }
                }
                //Phone List
                if (employee.PhoneNumbers != null)
                {
                    foreach (var item in employee.PhoneNumbers)
                    {
                        item.UserDomainKey    = employeeRepository.UserDomainKey;
                        item.IsActive         = true;
                        item.IsReadOnly       = item.IsPrivate = item.IsDeleted = false;
                        item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                        item.RecLastUpdatedBy = item.RecCreatedBy = employeeRepository.LoggedInUserIdentity;
                        item.RowVersion       = 0;
                    }
                }

                //Docs Info
                employee.EmpDocsInfo.UserDomainKey    = employeeRepository.UserDomainKey;
                employee.EmpDocsInfo.IsActive         = true;
                employee.EmpDocsInfo.IsReadOnly       = employee.EmpDocsInfo.IsPrivate = employee.EmpDocsInfo.IsDeleted = false;
                employee.EmpDocsInfo.RecLastUpdatedDt = employee.EmpDocsInfo.RecCreatedDt = DateTime.Now;
                employee.EmpDocsInfo.RecLastUpdatedBy = employee.EmpDocsInfo.RecCreatedBy = employeeRepository.LoggedInUserIdentity;

                //Job Progress List
                if (employee.EmpJobProgs != null)
                {
                    foreach (var item in employee.EmpJobProgs)
                    {
                        item.UserDomainKey    = employeeRepository.UserDomainKey;
                        item.IsActive         = true;
                        item.IsReadOnly       = item.IsPrivate = item.IsDeleted = false;
                        item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                        item.RecLastUpdatedBy = item.RecCreatedBy = employeeRepository.LoggedInUserIdentity;
                        item.RowVersion       = 0;
                    }
                }

                //Authorized Locations List
                if (employee.EmpAuthOperationsWorkplaces != null)
                {
                    foreach (var item in employee.EmpAuthOperationsWorkplaces)
                    {
                        item.UserDomainKey    = employeeRepository.UserDomainKey;
                        item.IsActive         = true;
                        item.IsReadOnly       = item.IsPrivate = item.IsDeleted = false;
                        item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                        item.RecLastUpdatedBy = item.RecCreatedBy = employeeRepository.LoggedInUserIdentity;
                        item.RowVersion       = 0;
                    }
                }
                employeeRepository.Add(employee);
            }
            #endregion

            #region Edit
            else
            {
                #region Employee
                empDbVersion.EmployeeId       = employee.EmployeeId;
                empDbVersion.CompanyId        = employee.CompanyId;
                empDbVersion.EmpStatusId      = employee.EmpStatusId;
                empDbVersion.Gender           = employee.Gender;
                empDbVersion.DOB              = employee.DOB;
                empDbVersion.EmpCode          = employee.EmpCode;
                empDbVersion.EmpFName         = employee.EmpFName;
                empDbVersion.EmpLName         = employee.EmpLName;
                empDbVersion.EmpMName         = employee.EmpMName;
                empDbVersion.Notes            = employee.Notes;
                empDbVersion.Notes1           = employee.Notes1;
                empDbVersion.Notes2           = employee.Notes2;
                empDbVersion.Notes3           = employee.Notes3;
                empDbVersion.Notes4           = employee.Notes4;
                empDbVersion.Notes5           = employee.Notes5;
                empDbVersion.NationalityId    = employee.NationalityId;
                empDbVersion.RecLastUpdatedBy = employeeRepository.LoggedInUserIdentity;
                empDbVersion.RecLastUpdatedDt = DateTime.Now;
                #endregion

                #region Emp Job Info
                empDbVersion.EmpJobInfo.DepartmentId     = employee.EmpJobInfo.DepartmentId;
                empDbVersion.EmpJobInfo.DesigGradeId     = employee.EmpJobInfo.DesigGradeId;
                empDbVersion.EmpJobInfo.DesignationId    = employee.EmpJobInfo.DesignationId;
                empDbVersion.EmpJobInfo.JobTypeId        = employee.EmpJobInfo.JobTypeId;
                empDbVersion.EmpJobInfo.SupervisorId     = employee.EmpJobInfo.SupervisorId;
                empDbVersion.EmpJobInfo.WorkPlaceId      = employee.EmpJobInfo.WorkPlaceId;
                empDbVersion.EmpJobInfo.JoiningDt        = employee.EmpJobInfo.JoiningDt;
                empDbVersion.EmpJobInfo.Salary           = employee.EmpJobInfo.Salary;
                empDbVersion.EmpJobInfo.RecLastUpdatedBy = employeeRepository.LoggedInUserIdentity;
                empDbVersion.EmpJobInfo.RecLastUpdatedDt = DateTime.Now;
                #endregion

                #region Emp Docs Info
                empDbVersion.EmpDocsInfo.InsuranceCompany   = employee.EmpDocsInfo.InsuranceCompany;
                empDbVersion.EmpDocsInfo.InsuranceDt        = employee.EmpDocsInfo.InsuranceDt;
                empDbVersion.EmpDocsInfo.InsuranceNo        = employee.EmpDocsInfo.InsuranceNo;
                empDbVersion.EmpDocsInfo.IqamaExpDt         = employee.EmpDocsInfo.IqamaExpDt;
                empDbVersion.EmpDocsInfo.IqamaNo            = employee.EmpDocsInfo.IqamaNo;
                empDbVersion.EmpDocsInfo.LicenseExpDt       = employee.EmpDocsInfo.LicenseExpDt;
                empDbVersion.EmpDocsInfo.LicenseNo          = employee.EmpDocsInfo.LicenseNo;
                empDbVersion.EmpDocsInfo.LicenseTypeId      = employee.EmpDocsInfo.LicenseTypeId;
                empDbVersion.EmpDocsInfo.PassportCountryId  = employee.EmpDocsInfo.PassportCountryId;
                empDbVersion.EmpDocsInfo.VisaIssueCountryId = employee.EmpDocsInfo.VisaIssueCountryId;
                empDbVersion.EmpDocsInfo.PassportNo         = employee.EmpDocsInfo.PassportNo;
                empDbVersion.EmpDocsInfo.PassportExpDt      = employee.EmpDocsInfo.PassportExpDt;
                empDbVersion.EmpDocsInfo.VisaNo             = employee.EmpDocsInfo.VisaNo;
                empDbVersion.EmpDocsInfo.VisaExpDt          = employee.EmpDocsInfo.VisaExpDt;
                empDbVersion.EmpDocsInfo.RecLastUpdatedBy   = employeeRepository.LoggedInUserIdentity;
                empDbVersion.EmpDocsInfo.RecLastUpdatedDt   = DateTime.Now;
                #endregion

                #region Address List
                if (employee.Addresses != null)
                {
                    foreach (var item in employee.Addresses)
                    {
                        if (
                            empDbVersion.Addresses.All(
                                x =>
                                x.AddressId != item.AddressId ||
                                item.AddressId == 0))
                        {
                            item.UserDomainKey    = employeeRepository.UserDomainKey;
                            item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                            item.RecLastUpdatedBy = item.RecCreatedBy = employeeRepository.LoggedInUserIdentity;
                            item.RowVersion       = 0;

                            empDbVersion.Addresses.Add(item);
                        }
                    }
                }
                //find missing items
                List <Address> missingAddressItems = new List <Address>();
                foreach (Address dbversionAddressItem in empDbVersion.Addresses)
                {
                    if (employee.Addresses != null && employee.Addresses.All(x => x.AddressId != dbversionAddressItem.AddressId))
                    {
                        missingAddressItems.Add(dbversionAddressItem);
                    }
                    if (employee.Addresses == null)
                    {
                        missingAddressItems.Add(dbversionAddressItem);
                    }
                }
                //remove missing items
                foreach (Address missingAddressItem in missingAddressItems)
                {
                    Address dbVersionMissingItem = empDbVersion.Addresses.First(x => x.AddressId == missingAddressItem.AddressId);
                    if (dbVersionMissingItem.AddressId > 0)
                    {
                        empDbVersion.Addresses.Remove(dbVersionMissingItem);
                        addressRepository.Delete(dbVersionMissingItem);
                        addressRepository.SaveChanges();
                    }
                }


                #endregion

                #region Phone List
                if (employee.PhoneNumbers != null)
                {
                    foreach (var item in employee.PhoneNumbers)
                    {
                        if (
                            empDbVersion.PhoneNumbers.All(
                                x =>
                                x.PhoneId != item.PhoneId ||
                                item.PhoneId == 0))
                        {
                            item.UserDomainKey    = employeeRepository.UserDomainKey;
                            item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                            item.RecLastUpdatedBy = item.RecCreatedBy = employeeRepository.LoggedInUserIdentity;
                            item.RowVersion       = 0;

                            empDbVersion.PhoneNumbers.Add(item);
                        }
                    }
                }
                //find missing items
                List <Phone> missingPhoneItems = new List <Phone>();
                foreach (Phone dbversionPhoneItem in empDbVersion.PhoneNumbers)
                {
                    if (employee.PhoneNumbers != null && employee.PhoneNumbers.All(x => x.PhoneId != dbversionPhoneItem.PhoneId))
                    {
                        missingPhoneItems.Add(dbversionPhoneItem);
                    }
                    if (employee.PhoneNumbers == null)
                    {
                        missingPhoneItems.Add(dbversionPhoneItem);
                    }
                }
                //remove missing items
                foreach (Phone missingPhoneItem in missingPhoneItems)
                {
                    Phone dbVersionMissingItem = empDbVersion.PhoneNumbers.First(x => x.PhoneId == missingPhoneItem.PhoneId);
                    if (dbVersionMissingItem.PhoneId > 0)
                    {
                        empDbVersion.PhoneNumbers.Remove(dbVersionMissingItem);
                        phoneRepository.Delete(dbVersionMissingItem);
                        phoneRepository.SaveChanges();
                    }
                }
                #endregion

                #region Docs Info
                employee.EmpDocsInfo.UserDomainKey    = employeeRepository.UserDomainKey;
                employee.EmpDocsInfo.IsActive         = true;
                employee.EmpDocsInfo.IsReadOnly       = employee.EmpDocsInfo.IsPrivate = employee.EmpDocsInfo.IsDeleted = false;
                employee.EmpDocsInfo.RecLastUpdatedDt = employee.EmpDocsInfo.RecCreatedDt = DateTime.Now;
                employee.EmpDocsInfo.RecLastUpdatedBy = employee.EmpDocsInfo.RecCreatedBy = employeeRepository.LoggedInUserIdentity;
                #endregion

                #region Job Progress List
                if (employee.EmpJobProgs != null)
                {
                    foreach (var item in employee.EmpJobProgs)
                    {
                        if (
                            empDbVersion.EmpJobProgs.All(
                                x =>
                                x.EmpJobProgId != item.EmpJobProgId ||
                                item.EmpJobProgId == 0))
                        {
                            item.UserDomainKey    = employeeRepository.UserDomainKey;
                            item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                            item.RecLastUpdatedBy = item.RecCreatedBy = employeeRepository.LoggedInUserIdentity;
                            item.RowVersion       = 0;

                            empDbVersion.EmpJobProgs.Add(item);
                        }
                    }
                }
                //find missing items
                List <EmpJobProg> missingEmpJobProgItems = new List <EmpJobProg>();
                foreach (EmpJobProg dbversionEmpJobProgItem in empDbVersion.EmpJobProgs)
                {
                    if (employee.EmpJobProgs != null && employee.EmpJobProgs.All(x => x.EmpJobProgId != dbversionEmpJobProgItem.EmpJobProgId))
                    {
                        missingEmpJobProgItems.Add(dbversionEmpJobProgItem);
                    }
                    if (employee.EmpJobProgs == null)
                    {
                        missingEmpJobProgItems.Add(dbversionEmpJobProgItem);
                    }
                }
                //remove missing items
                foreach (EmpJobProg missingEmpJobProgItem in missingEmpJobProgItems)
                {
                    EmpJobProg dbVersionMissingItem = empDbVersion.EmpJobProgs.First(x => x.EmpJobProgId == missingEmpJobProgItem.EmpJobProgId);
                    if (dbVersionMissingItem.EmpJobProgId > 0)
                    {
                        empDbVersion.EmpJobProgs.Remove(dbVersionMissingItem);
                        empJobProgRepository.Delete(dbVersionMissingItem);
                        empJobProgRepository.SaveChanges();
                    }
                }

                #endregion

                #region Authorized Locations List
                if (employee.EmpAuthOperationsWorkplaces != null)
                {
                    foreach (var item in employee.EmpAuthOperationsWorkplaces)
                    {
                        if (
                            empDbVersion.EmpAuthOperationsWorkplaces.All(
                                x =>
                                x.EmpAuthOperationsWorkplaceId != item.EmpAuthOperationsWorkplaceId ||
                                item.EmpAuthOperationsWorkplaceId == 0))
                        {
                            item.UserDomainKey    = employeeRepository.UserDomainKey;
                            item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                            item.RecLastUpdatedBy = item.RecCreatedBy = employeeRepository.LoggedInUserIdentity;
                            item.RowVersion       = 0;

                            empDbVersion.EmpAuthOperationsWorkplaces.Add(item);
                        }
                    }
                }
                //find missing items
                List <EmpAuthOperationsWorkplace> missingLocationItems = new List <EmpAuthOperationsWorkplace>();
                foreach (EmpAuthOperationsWorkplace dbversionLocationItem in empDbVersion.EmpAuthOperationsWorkplaces)
                {
                    if (employee.EmpAuthOperationsWorkplaces != null && employee.EmpAuthOperationsWorkplaces.All(x => x.EmpAuthOperationsWorkplaceId != dbversionLocationItem.EmpAuthOperationsWorkplaceId))
                    {
                        missingLocationItems.Add(dbversionLocationItem);
                    }
                    if (employee.EmpAuthOperationsWorkplaces == null)
                    {
                        missingLocationItems.Add(dbversionLocationItem);
                    }
                }
                //remove missing items
                foreach (EmpAuthOperationsWorkplace missingLocationItem in missingLocationItems)
                {
                    EmpAuthOperationsWorkplace dbVersionMissingItem = empDbVersion.EmpAuthOperationsWorkplaces.First(x => x.EmpAuthOperationsWorkplaceId == missingLocationItem.EmpAuthOperationsWorkplaceId);
                    if (dbVersionMissingItem.EmpAuthOperationsWorkplaceId > 0)
                    {
                        empDbVersion.EmpAuthOperationsWorkplaces.Remove(dbVersionMissingItem);
                        empAuthOperationsWorkplaceRepository.Delete(dbVersionMissingItem);
                        empAuthOperationsWorkplaceRepository.SaveChanges();
                    }
                }

                #endregion
            }
            #endregion

            employeeRepository.SaveChanges();

            return(employeeRepository.Find(employee.EmployeeId));
        }