Beispiel #1
0
        public Business ModelToEntity(UserSessionModel admin, BusinessModel model, bool businessEdit)
        {
            var entity = GetEntity(admin, model);

            if (this.Response.HasError)
            {
                return(null);
            }

            entity.BusinessName = Utilities.Trim(model.BusinessName);

            entity.AccountId = Utilities.Trim(model.AccountId);

            if (model.BusinessTypeId != null)
            {
                entity.BusinessTypeId = (BusinessTypeEnum)model.BusinessTypeId;
            }

            if (businessEdit)
            {
                if (this.Context.Entry(entity).State == EntityState.Added)
                {
                    if (entity.IsWebServiceImport)
                    {
                        model.Enabled = true;
                    }
                }

                entity.ShowPricing = model.ShowPricing;

                entity.Enabled = model.Enabled;

                Db.PermissionsUpdate(EntityEnum.CityArea, (long)PermissionTypeEnum.CityArea, EntityEnum.Business, model.BusinessId, CheckBoxListModel.ToPermissionListModel(model.CityAreas), PermissionTypeEnum.CityArea);
                Db.PermissionsUpdate(EntityEnum.Brand, (long)PermissionTypeEnum.Brand, EntityEnum.Business, model.BusinessId, CheckBoxListModel.ToPermissionListModel(model.Brands), PermissionTypeEnum.Brand);
                Db.PermissionsUpdate(EntityEnum.ProductFamily, (long)PermissionTypeEnum.ProductFamily, EntityEnum.Business, model.BusinessId, CheckBoxListModel.ToPermissionListModel(model.ProductFamilies), PermissionTypeEnum.ProductFamily);
                Db.PermissionsUpdate(EntityEnum.Tool, (long)PermissionTypeEnum.Tool, EntityEnum.Business, model.BusinessId, CheckBoxListModel.ToPermissionListModel(model.Tools), PermissionTypeEnum.Tool);

                contactService.BeginPropertyReference(this, "Contact");
                entity.Contact = contactService.ModelToEntity(model.Contact);
                contactService.EndPropertyReference();

                if (model.ParentBusinessId != 0 && model.ParentBusinessId != null)
                {
                    UpdateParentBusiness(model);
                }
            }

            addressService.BeginPropertyReference(this, "Address");
            entity.Address = addressService.ModelToEntity(model.Address);
            addressService.EndPropertyReference();

            return(entity);
        }
Beispiel #2
0
        public User ModelToEntity(UserSessionModel admin, UserModel model)
        {
            var entity = GetEntity(admin, model);

            if (this.Response.HasError)
            {
                return(null);
            }

            entity.Email = Utilities.Trim(model.Email);

            entity.FirstName = Utilities.Trim(model.FirstName);

            entity.MiddleName = Utilities.Trim(model.MiddleName);

            entity.LastName = Utilities.Trim(model.LastName);

            entity.MiddleName = Utilities.Trim(model.MiddleName);

            entity.LastName = Utilities.Trim(model.LastName);

            entity.UseBusinessAddress = model.UseBusinessAddress;

            entity.IsRegistering = model.IsRegistering;                                // not saved in DB but only for reference

            entity.IsNewBusiness = model.ExistingBusiness == ExistingBusinessEnum.New; // not saved in DB but only for reference

            contactService.BeginPropertyReference(this, "Contact");
            entity.Contact = contactService.ModelToEntity(model.Contact);
            contactService.EndPropertyReference();

            //Check address if you are not using business address
            if (model.UseBusinessAddress == false || entity.IsNewBusiness)
            {
                addressService.BeginPropertyReference(this, "Address");
                entity.Address = addressService.ModelToEntity(model.Address);
                addressService.EndPropertyReference();
            }

            if (entity.IsRegistering)
            {
                entity.Salt = Crypto.GenerateSalt();

                entity.Password = Crypto.Hash(model.Password, entity.Salt);

                if (!entity.IsNewBusiness)
                {
                    var dweb = new DaikinServices();

                    // Lookup by CRM Account Id and Daikin City Id
                    entity.Business = this.Db.GetBusinessByAccountId(model.Business.AccountId);
                    if (entity.Business == null &&
                        !string.IsNullOrEmpty(model.Business.DaikinCityId))
                    {
                        entity.Business = this.Db.GetBusinessByAccountId(model.Business.DaikinCityId);
                    }

                    if (entity.Business == null)
                    {
                        // Create record so that the business rules can be applied and correct error message produced
                        // i.e account verify will take place in the business rules
                        entity.Business = new Business
                        {
                            BusinessTypeId = (model.Business.BusinessTypeId == null) ? BusinessTypeEnum.Other : (BusinessTypeEnum)model.Business.BusinessTypeId,
                            AccountId      = model.Business.AccountId,
                            BusinessName   = model.Business.BusinessName
                        };
                    }

                    this.Response.PropertyReference = "";
                }
                else// is New Business
                {
                    //Copy address to the business
                    model.Business.Address = model.Address;

                    model.Business.BusinessId = null; // clear to make sure new record is added

                    businessService.BeginPropertyReference(this, "Business");
                    entity.Business = businessService.ModelToEntity(admin, model.Business, false);
                    if (model.Business.ParentBusinessId != null && model.Business.ParentBusinessId != 0 && entity.Business.BusinessId != 0)
                    {
                        //add BusinessLinks record
                        BusinessLinkModel businessLinkModel = new BusinessLinkModel()
                        {
                            BusinessId       = (long)entity.Business.BusinessId,
                            ParentBusinessId = model.Business.ParentBusinessId
                        };
                        businessLinkService.ModelToEntity(businessLinkModel);
                    }
                    businessService.EndPropertyReference();

                    // Setup default business permissions
                    if (!string.IsNullOrEmpty(entity.Business.BusinessId.ToString()) &&
                        !string.IsNullOrEmpty(entity.Business.BusinessTypeId.ToString()))
                    {
                        var bId  = entity.Business.BusinessId;
                        var btId = entity.Business.BusinessTypeId;
                        Db.ReplacePermissions(EntityEnum.BusinessType, (long)btId, EntityEnum.Business, bId, PermissionTypeEnum.Brand);
                        Db.ReplacePermissions(EntityEnum.BusinessType, (long)btId, EntityEnum.Business, bId, PermissionTypeEnum.CityArea);
                        Db.ReplacePermissions(EntityEnum.BusinessType, (long)btId, EntityEnum.Business, bId, PermissionTypeEnum.ProductFamily);
                        Db.ReplacePermissions(EntityEnum.BusinessType, (long)btId, EntityEnum.Business, bId, PermissionTypeEnum.Tool);
                    }
                }
            }
            else
            {
                // Own user cant change user type.
                if (admin.UserId != model.UserId)
                {
                    entity.UserTypeId = (UserTypeEnum)model.UserTypeId;
                }

                entity.BusinessId = model.Business.BusinessId;

                if (entity.BusinessId.HasValue) // Need business for business permission rules
                {
                    this.Db.GetBusinessByBusinessId(entity.BusinessId.Value);
                }

                if (model.Business.ParentBusinessId != 0)
                {
                    businessService.UpdateParentBusiness(model.Business);
                }

                if (this.Context.Entry(entity).State == EntityState.Added)
                {
                    entity.Salt = Crypto.GenerateSalt();

                    entity.Password = Crypto.Hash("%^$ggtfr", entity.Salt);

                    entity.Enabled = true;
                }

                entity.ShowPricing = model.ShowPricing;

                entity.Enabled = model.Enabled ?? entity.Enabled;

                entity.Approved = model.Approved ?? entity.Approved;

                if (model.UserId != admin.UserId) // cant update your own access
                {
                    permissionService.ApplyBusinessRules(entity, model, admin);
                }
            }

            return(entity);
        }