Here is my UserMenu.cs class below.
public class UsersMenu
{
public UsersMenu()
{
sectionList = new List<Section>();
moduleList = new List<Module>();
taskList = new List<Task>();
subTaskList = new List<SubTask>();
}
public string LevelNo { get; set; }
public string LevelId { get; set; }
public Section section { get; set; }
public List<Section> sectionList { get; set; }
public Module module { get; set; }
public List<Module> moduleList { get; set; }
public Task task { get; set; }
public List<Task> taskList { get; set; }
public SubTask subTask { get; set; }
public List<SubTask> subTaskList { get; set; }
}
Now if I try to use the UsersMenu
DI in the class UsersCompanyManager.cs as shown below.
namespace Identity.API.Business
{
public class UsersCompanyManager : IUsersCompanyManager
{
private readonly IUsersCompanyDB usersCompanyDB;
private UsersMenu _UsersMenu;
public UsersCompanyManager(IUsersCompanyDB usersCompanyDB)
{
this.usersCompanyDB = usersCompanyDB;
}
public UsersCompanyManager(UsersMenu UsersMenu)
{
_usersMenu = UsersMenu;
}
public UsersMenu PermissionLevelMenu(UsersMenu usersMenu)
{
var test = _UsersMenu; //gives null
return usersCompanyDB.PermissionLevelMenu(usersMenu);
}
}
}
This comes null var test = _UsersMenu;
and will show object reference is not set to an instance of an object issue if I try to use it anywhere else. Here is snapshot for it below.
Update 1:
namespace Identity.API.Interfaces
{
public interface IUsersCompanyDB
{
IList<UsersCompany> GetUsersCompany(string ID);
int UpsertUsersCompany(UsersCompany usersCompany);
int AddUsersCompany(UsersCompany usersCompany);
int UpdateUsersCompany(UsersCompany usersCompany);
IList<UserDTO> Search(SearchUser searchUser);
int UpsertUsersRoles(Role usersRole);
IList<Role> GetUsersRoles(string UserId);
UsersMenu PermissionLevelMenu(UsersMenu usersMenu);
}
}
Update 2:
namespace Identity.API.DataAccess
{
public class UsersCompanyDB : DataAccessBase, IUsersCompanyDB
{
private UsersMenu _UsersMenu;
public UsersCompanyDB(IDatabase database = null, ApplicationExecutionContext context = null) : base(database, context)
{
}
public UsersCompanyDB(UsersMenu UsersMenu)
{
_UsersMenu = UsersMenu;
}
IList<UsersCompany> IUsersCompanyDB.GetUsersCompany(string Id) => (IList<UsersCompany>)this.Database.Read("lm_company_users_get",
DbUtils.MakeProperties<UsersCompany>()
.AddProperty(ut => ut.ID)
.AddProperty(ut => ut.AddressID)
.AddProperty(ut => ut.FirstName)
.AddProperty(ut => ut.LastName)
.AddProperty(ut => ut.UserName)
.AddProperty(ut => ut.FullName)
.AddProperty(ut => ut.PasswordHash)
.AddProperty(ut => ut.PasswordSalt)
.AddProperty(ut => ut.Password)
.AddProperty(ut => ut.Role)
.AddProperty(ut => ut.UpdateDate)
.AddProperty(ut => ut.Email)
.AddProperty(ut => ut.Website)
.AddProperty(ut => ut.Language)
.AddProperty(ut => ut.CompanyID)
.AddProperty(ut => ut.BusinessUnitID)
.AddProperty(ut => ut.Occupation)
.AddProperty(ut => ut.AccessToken)
.AddProperty(ut => ut.RefreshToken)
.AddProperty(ut => ut.Title)
.AddProperty(ut => ut.CellPhoneNo)
.AddProperty(ut => ut.UserPhoneNo)
.AddProperty(ut => ut.UserFax)
.AddProperty(ut => ut.CustomerAccess)
.AddProperty(ut => ut.TimeZone)
.AddProperty(ut => ut.SendEmail)
.AddProperty(ut => ut.SendPhone)
.AddProperty(ut => ut.Pic)
.AddProperty(ut => ut.LegalName)
.AddProperty(ut => ut.DbaName)
.AddProperty(ut => ut.Address1)
.AddProperty(ut => ut.Address2)
.AddProperty(ut => ut.City)
.AddProperty(ut => ut.State)
.AddProperty(ut => ut.ZipCode)
.AddProperty(ut => ut.Country)
.AddProperty(ut => ut.PhoneNo)
.AddProperty(ut => ut.Fax)
.AddProperty(ut => ut.CompanyName)
.AddProperty(ut => ut.CompanyEmail)
.AddProperty(ut => ut.CompanyWebsite)
.AddProperty(ut => ut.TaxId)
.AddProperty(ut => ut.Active)
.AddProperty(ut => ut.EIN)
.AddProperty(ut => ut.SSN)
.AddProperty(ut => ut.CompanyLogo)
.AddProperty(ut => ut.IpAddress)
.AddProperty(ut => ut.OTP)
.AddProperty(ut => ut.VerififedOTP)
.AddProperty(ut => ut.CompanyID)
.AddProperty(ut => ut.CreateDate)
.AddProperty(ut => ut.LinkedIn)
.AddProperty(ut => ut.Facebook)
.AddProperty(ut => ut.Twitter)
.AddProperty(ut => ut.Instagram)
.AddProperty(ut => ut.CountryLocal)
.AddProperty(ut => ut.Type)
.AddProperty(ut => ut.SendSms),
DbUtils.MakeParams().Add("@Id", Id));
public int UpsertUsersCompany(UsersCompany usersCompany)
{
try
{
return this.Database.Execute("lm_users_upsert",
DbUtils.MakeParams()
.Add("@ID", usersCompany.ID)
.Add("@AddressID", usersCompany.AddressID)
.Add("@FirstName", usersCompany.FirstName)
.Add("@LastName", usersCompany.LastName)
.Add("@UserName", usersCompany.UserName)
.Add("@FullName", usersCompany.FullName)
.Add("@PasswordHash", usersCompany.PasswordHash)
.Add("@PasswordSalt", usersCompany.PasswordSalt)
.Add("@Password", usersCompany.Password)
.Add("@Role", usersCompany.Role)
.Add("@Email", usersCompany.Email)
.Add("@Website", usersCompany.Website)
.Add("@Language", usersCompany.Language)
.Add("@Occupation", usersCompany.Occupation)
.Add("@AccessToken", usersCompany.AccessToken)
.Add("@RefreshToken", usersCompany.RefreshToken)
.Add("@Title", usersCompany.Title)
.Add("@CellPhoneNo", usersCompany.CellPhoneNo)
.Add("@UserPhoneNo", usersCompany.UserPhoneNo)
.Add("@UserFax", usersCompany.UserFax)
.Add("@CustomerAccess", usersCompany.CustomerAccess)
.Add("@TimeZone", usersCompany.TimeZone)
.Add("@SendEmail", usersCompany.SendEmail)
.Add("@SendPhone", usersCompany.SendPhone)
.Add("@Pic", usersCompany.Pic)
.Add("@LegalName", usersCompany.LegalName)
.Add("@DbaName", usersCompany.DbaName)
.Add("@Address1", usersCompany.Address1)
.Add("@Address2", usersCompany.Address2)
.Add("@City", usersCompany.City)
.Add("@State", usersCompany.State)
.Add("@ZipCode", usersCompany.ZipCode)
.Add("@Country", usersCompany.Country)
.Add("@PhoneNo", usersCompany.PhoneNo)
.Add("@Fax", usersCompany.Fax)
.Add("@CompanyName", usersCompany.CompanyName)
.Add("@CompanyEmail", usersCompany.CompanyEmail)
.Add("@CompanyWebsite", usersCompany.CompanyWebsite)
.Add("@TaxId", usersCompany.TaxId)
.Add("@Active", usersCompany.Active)
.Add("@EIN", usersCompany.EIN)
.Add("@SSN", usersCompany.SSN)
.Add("@CompanyLogo", usersCompany.CompanyLogo)
.Add("@IpAddress", usersCompany.IpAddress)
.Add("@OTP", usersCompany.OTP)
.Add("@VerififedOTP", usersCompany.VerififedOTP)
.Add("@CompanyID", usersCompany.CompanyID)
.Add("@Type", usersCompany.Type)
.Add("@LinkedIn", usersCompany.LinkedIn)
.Add("@Facebook", usersCompany.Facebook)
.Add("@Twitter", usersCompany.Twitter)
.Add("@Instagram", usersCompany.Instagram)
.Add("@CountryLocal", usersCompany.CountryLocal));
}
catch (SqlException exception)
{
Console.WriteLine(exception.Message);
return 0;
}
}
public int UpsertUsersRoles(Role usersRole)
{
try
{
return this.Database.Execute("lm_users_roles_upsert",
DbUtils.MakeParams()
.Add("@RoleID", usersRole.RoleID)
.Add("@RoleName", usersRole.RoleName)
.Add("@Description", usersRole.Description)
.Add("@CompanyID", usersRole.CompanyID)
.Add("@CreatedBy", usersRole.CreatedBy)
.Add("@CreatedDate", usersRole.CreatedDate)
.Add("@LastModifiedBy", usersRole.LastModifiedBy)
.Add("@LastModifiedDate", usersRole.LastModifiedDate)
.Add("@Internal", usersRole.Internal)
.Add("@RoleTypeCode", usersRole.RoleTypeCode)
.Add("@DefaultRoleID", usersRole.DefaultRoleID)
.Add("@Status", usersRole.Status)
.Add("@UserId", usersRole.UserId)
);
}
catch (SqlException exception)
{
Console.WriteLine(exception.Message);
return 0;
}
}
IList<Role> IUsersCompanyDB.GetUsersRoles(string Id) => (IList<Role>)this.Database.Read("lm_users_roles_get",
DbUtils.MakeProperties<Role>()
.AddProperty(ut => ut.RoleID)
.AddProperty(ut => ut.RoleName)
.AddProperty(ut => ut.Description)
.AddProperty(ut => ut.CompanyID)
.AddProperty(ut => ut.CreatedBy)
.AddProperty(ut => ut.CreatedDate)
.AddProperty(ut => ut.LastModifiedBy)
.AddProperty(ut => ut.LastModifiedDate)
.AddProperty(ut => ut.Internal)
.AddProperty(ut => ut.RoleTypeCode)
.AddProperty(ut => ut.DefaultRoleID)
.AddProperty(ut => ut.Status)
.AddProperty(ut => ut.UserId),
DbUtils.MakeParams().Add("@UserId", Id));
public int AddUsersCompany(UsersCompany usersCompany)
{
return this.Database.Execute("lm_users_add",
DbUtils.MakeParams()
.Add("@AddressID", usersCompany.AddressID)
.Add("@FirstName", usersCompany.FirstName)
.Add("@LastName", usersCompany.LastName)
.Add("@UserName", usersCompany.UserName)
.Add("@FullName", usersCompany.FullName)
.Add("@PasswordHash", usersCompany.PasswordHash)
.Add("@PasswordSalt", usersCompany.PasswordSalt)
.Add("@Password", usersCompany.Password)
.Add("@Role", usersCompany.Role)
.Add("@UpdateDate", usersCompany.UpdateDate)
.Add("@Email", usersCompany.Email)
.Add("@Website", usersCompany.Website)
.Add("@Language", usersCompany.Language)
.Add("@Occupation", usersCompany.Occupation)
.Add("@AccessToken", usersCompany.AccessToken)
.Add("@RefreshToken", usersCompany.RefreshToken)
.Add("@Title", usersCompany.Title)
.Add("@CellPhoneNo", usersCompany.CellPhoneNo)
.Add("@UserPhoneNo", usersCompany.UserPhoneNo)
.Add("@UserFax", usersCompany.UserFax)
.Add("@CustomerAccess", usersCompany.CustomerAccess)
.Add("@TimeZone", usersCompany.TimeZone)
.Add("@SendEmail", usersCompany.SendEmail)
.Add("@SendPhone", usersCompany.SendPhone)
.Add("@Pic", usersCompany.Pic)
.Add("@LegalName", usersCompany.LegalName)
.Add("@DbaName", usersCompany.DbaName)
.Add("@Address1", usersCompany.Address1)
.Add("@Address2", usersCompany.Address2)
.Add("@City", usersCompany.City)
.Add("@State", usersCompany.State)
.Add("@ZipCode", usersCompany.ZipCode)
.Add("@Country", usersCompany.Country)
.Add("@PhoneNo", usersCompany.PhoneNo)
.Add("@Fax", usersCompany.Fax)
.Add("@CompanyName", usersCompany.CompanyName)
.Add("@CompanyEmail", usersCompany.CompanyEmail)
.Add("@CompanyWebsite", usersCompany.CompanyWebsite)
.Add("@TaxId", usersCompany.TaxId)
.Add("@Active", usersCompany.Active)
.Add("@EIN", usersCompany.EIN)
.Add("@SSN", usersCompany.SSN)
.Add("@CompanyLogo", usersCompany.CompanyLogo)
.Add("@IpAddress", usersCompany.IpAddress)
.Add("@OTP", usersCompany.OTP)
.Add("@VerififedOTP", usersCompany.VerififedOTP)
.Add("@CompanyID", usersCompany.CompanyID));
}
public int UpdateUsersCompany(UsersCompany usersCompany)
{
return this.Database.Execute("lm_users_update",
DbUtils.MakeParams()
.Add("@ID", usersCompany.ID)
.Add("@AddressID", usersCompany.AddressID)
.Add("@FirstName", usersCompany.FirstName)
.Add("@LastName", usersCompany.LastName)
.Add("@UserName", usersCompany.UserName)
.Add("@FullName", usersCompany.FullName)
.Add("@PasswordHash", usersCompany.PasswordHash)
.Add("@PasswordSalt", usersCompany.PasswordSalt)
.Add("@Password", usersCompany.Password)
.Add("@Role", usersCompany.Role)
.Add("@UpdateDate", usersCompany.UpdateDate)
.Add("@Email", usersCompany.Email)
.Add("@Website", usersCompany.Website)
.Add("@Language", usersCompany.Language)
.Add("@Occupation", usersCompany.Occupation)
.Add("@AccessToken", usersCompany.AccessToken)
.Add("@RefreshToken", usersCompany.RefreshToken)
.Add("@Title", usersCompany.Title)
.Add("@CellPhoneNo", usersCompany.CellPhoneNo)
.Add("@UserPhoneNo", usersCompany.UserPhoneNo)
.Add("@UserFax", usersCompany.UserFax)
.Add("@CustomerAccess", usersCompany.CustomerAccess)
.Add("@TimeZone", usersCompany.TimeZone)
.Add("@SendEmail", usersCompany.SendEmail)
.Add("@SendPhone", usersCompany.SendPhone)
.Add("@Pic", usersCompany.Pic)
.Add("@LegalName", usersCompany.LegalName)
.Add("@DbaName", usersCompany.DbaName)
.Add("@Address1", usersCompany.Address1)
.Add("@Address2", usersCompany.Address2)
.Add("@City", usersCompany.City)
.Add("@State", usersCompany.State)
.Add("@ZipCode", usersCompany.ZipCode)
.Add("@Country", usersCompany.Country)
.Add("@PhoneNo", usersCompany.PhoneNo)
.Add("@Fax", usersCompany.Fax)
.Add("@CompanyName", usersCompany.CompanyName)
.Add("@CompanyEmail", usersCompany.CompanyEmail)
.Add("@CompanyWebsite", usersCompany.CompanyWebsite)
.Add("@TaxId", usersCompany.TaxId)
.Add("@Active", usersCompany.Active)
.Add("@EIN", usersCompany.EIN)
.Add("@SSN", usersCompany.SSN)
.Add("@CompanyLogo", usersCompany.CompanyLogo)
.Add("@IpAddress", usersCompany.IpAddress)
.Add("@OTP", usersCompany.OTP)
.Add("@VerififedOTP", usersCompany.VerififedOTP)
.Add("@CompanyID", usersCompany.CompanyID));
}
public IList<UserDTO> Search(SearchUser searchUser)
{
return this.Database.Read<UserDTO>("lm_users_search",
DbUtils.MakeProperties<UserDTO>()
.AddProperty(ut => ut.ID)
.AddProperty(ut => ut.AddressID)
.AddProperty(ut => ut.UserName)
.AddProperty(ut => ut.Password)
.AddProperty(ut => ut.Email)
.AddProperty(ut => ut.AccessToken)
.AddProperty(ut => ut.RefreshToken)
.AddProperty(ut => ut.Role)
.AddProperty(ut => ut.Pic)
.AddProperty(ut => ut.FullName)
.AddProperty(ut => ut.FirstName)
.AddProperty(ut => ut.LastName)
.AddProperty(ut => ut.Occupation)
.AddProperty(ut => ut.CompanyName)
.AddProperty(ut => ut.PhoneNo)
.AddProperty(ut => ut.Language)
.AddProperty(ut => ut.TimeZone)
.AddProperty(ut => ut.CommunicationEmail)
.AddProperty(ut => ut.SMS)
.AddProperty(ut => ut.Phone)
.AddProperty(ut => ut.EmailNotification)
.AddProperty(ut => ut.SendCopyToPersonalEmail)
.AddProperty(ut => ut.YouHaveNewNotifications)
.AddProperty(ut => ut.YouAreSentADirectMessage)
.AddProperty(ut => ut.SomeoneAddsYouAsAsAConnection)
.AddProperty(ut => ut.UponNewOrder)
.AddProperty(ut => ut.NewMembershipApproval)
.AddProperty(ut => ut.MemberRegistration)
.AddProperty(ut => ut.NewsAboutKeenthemesProductsAndFeatureUpdates)
.AddProperty(ut => ut.TipsOnGettingMoreOutOfKeen)
.AddProperty(ut => ut.ThingsYouMissedSindeYouLastLoggedIntoKeen)
.AddProperty(ut => ut.NewsAboutMetronicOnPartnerProductsAndOtherServices)
.AddProperty(ut => ut.TipsOnMetronicBusinessProducts)
.AddProperty(ut => ut.LinkedIn)
.AddProperty(ut => ut.Facebook)
.AddProperty(ut => ut.Twitter)
.AddProperty(ut => ut.Instagram)
.AddProperty(ut => ut.AddressLine)
.AddProperty(ut => ut.City)
.AddProperty(ut => ut.State)
.AddProperty(ut => ut.ZipCode),
DbUtils.MakeParams()
.Add("@UserID", searchUser.UserID)
.Add("@CompanyID", searchUser.CompanyID)
.Add("@Name", searchUser.Name)
.Add("@EmailID", searchUser.EmailID));
}
public UsersMenu PermissionLevelMenu(UsersMenu usersMenu)
{
//_UsersMenu = new UsersMenu();
if (usersMenu.LevelNo == "L1")
{
//var test = _UsersMenu;
UsersMenu _UsersMenu = new UsersMenu();
_UsersMenu.sectionList = (List<Section>)Database.Read("lm_users_menu_permission",
DbUtils.MakeProperties<Section>()
.AddProperty(ut => ut.SectionId)
.AddProperty(ut => ut.SectionName)
.AddProperty(ut => ut.Description)
.AddProperty(ut => ut.CreatedBy)
.AddProperty(ut => ut.CreatedDate)
.AddProperty(ut => ut.UpdatedBy)
.AddProperty(ut => ut.UpdatedDate),
DbUtils.MakeParams()
.Add("@LevelNo", usersMenu.LevelNo)
.Add("@LevelId", usersMenu.LevelId));
return _UsersMenu;
}
else if (usersMenu.LevelNo == "L2")
{
_UsersMenu.moduleList = (List<Module>)Database.Read("lm_users_menu_permission",
DbUtils.MakeProperties<Module>()
.AddProperty(ut => ut.ModuleId)
.AddProperty(ut => ut.ModuleName)
.AddProperty(ut => ut.SectionId)
.AddProperty(ut => ut.Description)
.AddProperty(ut => ut.CreatedBy)
.AddProperty(ut => ut.CreatedDate)
.AddProperty(ut => ut.UpdatedBy)
.AddProperty(ut => ut.UpdatedDate),
DbUtils.MakeParams()
.Add("@LevelNo", usersMenu.LevelNo)
.Add("@LevelId", usersMenu.LevelId));
return _UsersMenu;
}
else if (usersMenu.LevelNo == "L3")
{
_UsersMenu.taskList = (List<Task>)Database.Read("lm_users_menu_permission",
DbUtils.MakeProperties<Task>()
.AddProperty(ut => ut.TaskID)
.AddProperty(ut => ut.LevelCode)
.AddProperty(ut => ut.TaskName)
.AddProperty(ut => ut.Definition)
.AddProperty(ut => ut.ReasonAdded)
.AddProperty(ut => ut.IntendedRecipients)
.AddProperty(ut => ut.ReleaseNumber)
.AddProperty(ut => ut.Category)
.AddProperty(ut => ut.CreatedDate)
.AddProperty(ut => ut.LastModifiedBy)
.AddProperty(ut => ut.LastModifiedDate)
.AddProperty(ut => ut.Features)
.AddProperty(ut => ut.Status)
.AddProperty(ut => ut.TaskGuid)
.AddProperty(ut => ut.ModuleId),
DbUtils.MakeParams()
.Add("@LevelNo", usersMenu.LevelNo)
.Add("@LevelId", usersMenu.LevelId));
return _UsersMenu;
}
else
{
_UsersMenu.subTaskList = (List<SubTask>)Database.Read("lm_users_menu_permission",
DbUtils.MakeProperties<SubTask>()
.AddProperty(ut => ut.SubTaskId)
.AddProperty(ut => ut.SubTaskName)
.AddProperty(ut => ut.TaskId)
.AddProperty(ut => ut.Description)
.AddProperty(ut => ut.CreatedBy)
.AddProperty(ut => ut.CreatedDate)
.AddProperty(ut => ut.UpdatedBy)
.AddProperty(ut => ut.UpdatedDate),
DbUtils.MakeParams()
.Add("@LevelNo", usersMenu.LevelNo)
.Add("@LevelId", usersMenu.LevelId));
return _UsersMenu;
}
}
}
}