public BusinessDataModel Update(BusinessDataModel dataModel)
        {
            if (dataModel != null)
            {
                BusinessDTO        businessDTO        = new BusinessDTO();
                List <AddressDTO>  addressDTO         = new List <AddressDTO>();
                PhoneDTO           phoneDTO           = new PhoneDTO();
                EmailDTO           emailDTO           = new EmailDTO();
                BusinessUserMapDTO businessUserMapDTO = new BusinessUserMapDTO();

                businessDTO        = BusinessDataModelAssembler.ToBusinessDTO(dataModel);
                phoneDTO           = BusinessDataModelAssembler.ToPhoneDTO(dataModel);
                emailDTO           = BusinessDataModelAssembler.ToEmailDTO(dataModel);
                addressDTO         = BusinessDataModelAssembler.ToAddressDTO(dataModel);
                businessUserMapDTO = BusinessDataModelAssembler.ToBusinessUserMapDTO(dataModel);

                if (businessDTO != null)
                {
                    businessDTO = businessBL.Update(businessDTO);
                }
                dataModel = BusinessDataModelAssembler.ToDataModel(businessDTO, addressDTO, phoneDTO, emailDTO, null, null, businessUserMapDTO, null);


                if (phoneDTO != null)
                {
                    phoneDTO = phonesBL.Update(phoneDTO);
                }
                new BusinessPhoneBL().Update(new BusinessPhoneDTO()
                {
                    BusinessID      = dataModel.BusinessID,
                    BusinessPhoneID = dataModel.BusinessPhoneID,
                    IsPrimary       = true
                });
                dataModel = BusinessDataModelAssembler.ToDataModel(businessDTO, addressDTO, phoneDTO, emailDTO, null, null, businessUserMapDTO, null);
                if (emailDTO != null)
                {
                    emailDTO = emailsBL.Update(emailDTO);
                }
                new BusinessEmailBL().Update(new BusinessEmailDTO()
                {
                    BusinessID      = dataModel.BusinessID,
                    BusinessEmailID = dataModel.BusinessEmailID,
                    IsPrimary       = true
                });
                dataModel = BusinessDataModelAssembler.ToDataModel(businessDTO, addressDTO, phoneDTO, emailDTO, null, null, businessUserMapDTO, null);
                if (addressDTO != null)
                {
                    addressDTO = addressDTO.Select(p => addressBL.Update(p)).ToList();
                }
                dataModel = BusinessDataModelAssembler.ToDataModel(businessDTO, addressDTO, phoneDTO, emailDTO, null, null, businessUserMapDTO, null);
                new BusinessAddressBL().Update(new BusinessAddressDTO()
                {
                    BusinessID        = dataModel.BusinessID,
                    BusinessAddressID = dataModel.BusinessAddressID,
                    IsPrimary         = true
                });
            }

            return(dataModel);
        }
        public BusinessDataModel Create(BusinessDataModel dataModel)
        {
            if (dataModel != null)
            {
                BusinessDTO        businessDTO        = new BusinessDTO();
                List <AddressDTO>  addressDTO         = new List <AddressDTO>();
                PhoneDTO           phoneDTO           = new PhoneDTO();
                EmailDTO           emailDTO           = new EmailDTO();
                BusinessUserMapDTO businessUserMapDTO = new BusinessUserMapDTO();

                businessDTO        = BusinessDataModelAssembler.ToBusinessDTO(dataModel);
                phoneDTO           = BusinessDataModelAssembler.ToPhoneDTO(dataModel);
                emailDTO           = BusinessDataModelAssembler.ToEmailDTO(dataModel);
                addressDTO         = BusinessDataModelAssembler.ToAddressDTO(dataModel);
                businessUserMapDTO = BusinessDataModelAssembler.ToBusinessUserMapDTO(dataModel);

                if (businessDTO != null)
                {
                    businessDTO = businessBL.Create(businessDTO);
                }
                dataModel = BusinessDataModelAssembler.ToDataModel(businessDTO, addressDTO, phoneDTO, emailDTO, null, null, businessUserMapDTO, null);
                if (dataModel.BusinessUserId != 0)
                {
                    new BusinessUserMapBL().Create(new BusinessUserMapDTO()
                    {
                        BusinessID         = dataModel.BusinessID,
                        UserID             = dataModel.BusinessUserId,
                        BusinessUserTypeID = dataModel.BusinessUserMapTypeCodeId,
                        IsOwner            = true
                    });
                }

                addressDTO = BusinessDataModelAssembler.ToAddressDTO(dataModel);
                if (addressDTO != null)
                {
                    List <AddressDTO> addressList = new List <AddressDTO>();
                    //addressDTO = addressDTO.Select(p => addressBL.Create(p)).ToList();
                    foreach (var item in addressDTO)
                    {
                        addressList.Add(addressBL.Create(item));
                    }

                    addressDTO = addressList;
                }
                dataModel = BusinessDataModelAssembler.ToDataModel(businessDTO, addressDTO, phoneDTO, emailDTO, null, null, businessUserMapDTO, null);
                if (dataModel.Addresses.Count() != 0)
                {
                    new BusinessAddressBL().Create(new BusinessAddressDTO()
                    {
                        BusinessID = dataModel.BusinessID,
                        AddressID  = dataModel.Addresses.FirstOrDefault().AddressID,
                        IsPrimary  = true
                    });
                }

                if (addressDTO.Count != 0)
                {
                    phoneDTO = BusinessDataModelAssembler.ToPhoneDTO(dataModel);
                    if (phoneDTO != null)
                    {
                        phoneDTO.AddressbookID = addressDTO.FirstOrDefault().AddressID;
                        phoneDTO = phonesBL.Create(phoneDTO);
                    }
                    dataModel = BusinessDataModelAssembler.ToDataModel(businessDTO, addressDTO, phoneDTO, emailDTO, null, null, businessUserMapDTO, null);
                    new BusinessPhoneBL().Create(new BusinessPhoneDTO()
                    {
                        BusinessID = dataModel.BusinessID,
                        PhoneID    = dataModel.BusinessPhoneID,
                        IsPrimary  = true
                    });
                }

                dataModel = BusinessDataModelAssembler.ToDataModel(businessDTO, addressDTO, phoneDTO, emailDTO, null, null, businessUserMapDTO, null);
                emailDTO  = BusinessDataModelAssembler.ToEmailDTO(dataModel);
                if (emailDTO != null)
                {
                    emailDTO = emailsBL.Create(emailDTO);
                }
                dataModel = BusinessDataModelAssembler.ToDataModel(businessDTO, addressDTO, phoneDTO, emailDTO, null, null, businessUserMapDTO, null);
                new BusinessEmailBL().Create(new BusinessEmailDTO()
                {
                    BusinessID = dataModel.BusinessID,
                    EmailID    = dataModel.BusinessEmailID,
                    IsPrimary  = true
                });
                dataModel = BusinessDataModelAssembler.ToDataModel(businessDTO, addressDTO, phoneDTO, emailDTO, null, null, businessUserMapDTO, null);
            }

            return(dataModel);
        }