public void DeleteByAssociateId_Valid_Success()
        {
            #region Arrange

            var associateAssociateType = CreateNewAssociateAssociateType();

            #endregion

            #region Act

            _repository.DeleteByAssociateTypeId(associateAssociateType.AssociateType.Id, new List <int>
            {
                associateAssociateType.Associate.Id
            });

            #endregion

            #region Assert

            Assert.AreEqual(_dbContext.AssociateAssociateTypes.Count(), 0);

            #endregion
        }
예제 #2
0
        /// <summary>
        /// Save Associate
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public ResponseModel SaveAssociate(AssociateManageModel model)
        {
            ResponseModel response;

            var associate = GetById(model.Id);

            if (associate != null)
            {
                associate.Title                 = model.Title;
                associate.JobTitle              = model.JobTitle;
                associate.FirstName             = model.FirstName;
                associate.LastName              = model.LastName;
                associate.Email                 = model.Email;
                associate.AddressLine1          = model.AddressLine1;
                associate.AddressLine2          = model.AddressLine2;
                associate.Suburb                = model.Suburb;
                associate.State                 = model.State;
                associate.Postcode              = model.Postcode;
                associate.Country               = model.Country;
                associate.PhoneWork             = model.PhoneWork;
                associate.PhoneHome             = model.PhoneHome;
                associate.MobilePhone           = model.MobilePhone;
                associate.Fax                   = model.Fax;
                associate.Gender                = model.Gender;
                associate.Photo                 = model.Photo;
                associate.University            = model.University;
                associate.Qualification         = model.Qualification;
                associate.OtherQualification    = model.OtherQualification;
                associate.Achievements          = model.Achievements;
                associate.Memberships           = model.Memberships;
                associate.Appointments          = model.Appointments;
                associate.PersonalInterests     = model.PersonalInterests;
                associate.ProfessionalInterests = model.ProfessionalInterests;
                associate.Positions             = model.Positions;
                associate.IsNew                 = model.IsNew;
                associate.DateStart             = model.DateStart;
                associate.DateEnd               = model.DateEnd;

                associate.Company = _companyService.SaveCompany(model.Company);

                #region Associate Types

                var currentAssociateTypes = associate.AssociateAssociateTypes.Select(nc => nc.AssociateTypeId).ToList();

                if (model.AssociateTypeIds == null)
                {
                    model.AssociateTypeIds = new List <int>();
                }

                // Remove reference to deleted types
                var removedAssociateTypeIds = currentAssociateTypes.Where(id => !model.AssociateTypeIds.Contains(id));
                _associateAssociateTypeRepository.DeleteByAssociateTypeId(associate.Id, removedAssociateTypeIds);

                // Add new reference to types
                var addedAssociateTypeIds = model.AssociateTypeIds.Where(id => !currentAssociateTypes.Contains(id));
                _associateAssociateTypeRepository.InsertByAssociateId(associate.Id, addedAssociateTypeIds);

                #endregion

                #region Company Types

                var currentCompanyTypes = associate.AssociateCompanyTypes.Select(nc => nc.CompanyTypeId).ToList();

                if (model.CompanyTypeIds == null)
                {
                    model.CompanyTypeIds = new List <int>();
                }

                // Remove reference to deleted types
                var removedCompanyTypeIds = currentCompanyTypes.Where(id => !model.CompanyTypeIds.Contains(id));
                _associateCompanyTypeRepository.DeleteByAssociateId(associate.Id, removedCompanyTypeIds);

                // Add new reference to types
                var addedCompanyTypeIds = model.CompanyTypeIds.Where(id => !currentCompanyTypes.Contains(id));
                _associateCompanyTypeRepository.InsertByAssociateId(associate.Id, addedCompanyTypeIds);

                #endregion

                #region Locations

                var currentLocations = associate.AssociateLocations.Select(nc => nc.LocationId).ToList();

                if (model.LocationIds == null)
                {
                    model.LocationIds = new List <int>();
                }

                // Remove reference to deleted locations
                var removedLocationIds = currentLocations.Where(id => !model.LocationIds.Contains(id));
                _associateLocationRepository.DeleteByAssociateId(associate.Id, removedLocationIds);

                // Add new reference to locations
                var addedLocationIds = model.LocationIds.Where(id => !currentLocations.Contains(id));
                _associateLocationRepository.InsertByAssociateId(associate.Id, addedLocationIds);

                #endregion

                response = Update(associate);
                return(response.SetMessage(response.Success
                    ? T("Associate_Message_UpdateSuccessfully")
                    : T("Associate_Message_UpdateFailure")));
            }
            Mapper.CreateMap <AssociateManageModel, Associate>();
            associate = Mapper.Map <AssociateManageModel, Associate>(model);

            associate.Company = _companyService.SaveCompany(model.Company);

            response = Insert(associate);

            #region Associate Types

            if (model.AssociateTypeIds == null)
            {
                model.AssociateTypeIds = new List <int>();
            }

            _associateAssociateTypeRepository.InsertByAssociateId(associate.Id, model.AssociateTypeIds);

            #endregion

            #region Company Types

            if (model.CompanyTypeIds == null)
            {
                model.CompanyTypeIds = new List <int>();
            }

            _associateCompanyTypeRepository.InsertByAssociateId(associate.Id, model.CompanyTypeIds);

            #endregion

            #region Locations

            if (model.LocationIds == null)
            {
                model.LocationIds = new List <int>();
            }

            _associateLocationRepository.InsertByAssociateId(associate.Id, model.LocationIds);

            #endregion

            return(response.SetMessage(response.Success
                ? T("Associate_Message_CreateSuccessfully")
                : T("Associate_Message_CreateFailure")));
        }