public override T Convert <T, U>(U entity)
        {
            if (entity.GetType().Name == "Invitation")
            {
                BO.User    boUser     = new BO.User();
                Invitation invitation = entity as Invitation;
                if (invitation == null)
                {
                    return(default(T));
                }

                BO.Invitation boInvitation = new BO.Invitation();
                boUser.ID = invitation.UserID;
                boInvitation.InvitationID = invitation.InvitationID;
                boInvitation.User         = boUser;
                return((T)(object)boInvitation);
            }
            else
            {
                Company company = entity as Company;
                if (company == null)
                {
                    return(default(T));
                }

                BO.Company boCompany = new BO.Company();

                boCompany.ID          = company.id;
                boCompany.Name        = company.Name;
                boCompany.TaxID       = company.TaxID == null ? null : company.TaxID;
                boCompany.Status      = (BO.GBEnums.AccountStatus)company.Status;
                boCompany.CompanyType = (BO.GBEnums.CompanyType)company.CompanyType;
                if (company.SubscriptionPlanType != null)
                {
                    boCompany.SubsCriptionType = (BO.GBEnums.SubsCriptionType)company.SubscriptionPlanType;
                }
                else
                {
                    boCompany.SubsCriptionType = null;
                }
                boCompany.CompanyStatusTypeID = (BO.GBEnums.CompanyStatusType)company.CompanyStatusTypeID;

                if (company.Locations != null)
                {
                    List <BO.Location> lstLocation = new List <BO.Location>();
                    foreach (var item in company.Locations)
                    {
                        using (LocationRepository sr = new LocationRepository(_context))
                        {
                            BO.Location location = sr.Convert <BO.Location, Location>(item);
                            location.Company = null;
                            lstLocation.Add(location);
                        }
                    }

                    boCompany.Locations = lstLocation;
                }
                return((T)(object)boCompany);
            }
        }
        public override object ValidateInvitation <T>(T data)
        {
            BO.Invitation invitationBO = (BO.Invitation)(object) data;
            //Find Record By UniqueID
            Invitation invitation = _context.Invitations.Include("Company")
                                    .Include("User.UserCompanies")
                                    .Where(p => p.UniqueID == invitationBO.UniqueID).FirstOrDefault <Invitation>();

            if (invitation != null)
            {
                invitation.IsActivated           = true;
                invitation.IsExpired             = true;
                invitation.UpdateByUserID        = 0;
                invitation.UpdateDate            = invitationBO.UpdateDate;
                _context.Entry(invitation).State = System.Data.Entity.EntityState.Modified;
                _context.SaveChanges();
            }
            else
            {
                return(new BO.ErrorObject {
                    ErrorMessage = "Invalid appkey or other parameters.", errorObject = "", ErrorLevel = ErrorLevel.Error
                });
            }
            return((object)Convert <BO.Invitation, Invitation>(invitation));
        }
        public override T Convert <T, U>(U entity)
        {
            BO.User    boUser     = new BO.User();
            BO.Company boCompany  = new BO.Company();
            Invitation invitation = entity as Invitation;

            if (invitation == null)
            {
                return(default(T));
            }

            BO.Invitation boInvitation = new BO.Invitation();
            boUser.ID = invitation.UserID;
            boInvitation.InvitationID = invitation.InvitationID;
            boInvitation.User         = boUser;

            if (invitation.User.UserCompanies != null && invitation.User.UserCompanies.Count > 0)
            {
                List <BO.UserCompany> boUserCompany = new List <BO.UserCompany>();
                invitation.User.UserCompanies.Where(p => p.IsAccepted == true && (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false)))
                .ToList().ForEach(x => boUserCompany.Add(new BO.UserCompany()
                {
                    CompanyId = x.CompanyID, UserId = x.UserID, UserStatusID = (BO.GBEnums.UserStatu)x.UserStatusID, CreateByUserID = x.CreateByUserID, ID = x.id, IsDeleted = x.IsDeleted, UpdateByUserID = x.UpdateByUserID
                }));
                boInvitation.User.UserCompanies = boUserCompany;
            }



            boCompany.ID         = invitation.CompanyID;
            boInvitation.Company = boCompany;

            return((T)(object)boInvitation);
        }
        public override List <MIDAS.GBX.BusinessObjects.BusinessValidation> Validate <T>(T entity)
        {
            BO.Invitation invitationBO = (BO.Invitation)(object) entity;

            var result = invitationBO.Validate(invitationBO);

            return(result);
        }