// if ut is a valid update
        // return false if update is invalid
        public static bool IsValidToUpdate(this CompanyModel company)
        {
            // check ID input
            if (company.Id == Guid.Empty)
            {
                return(false);
            }

            var companyToCompare = MvcApplication.Companies.First(x => x.Id == company.Id);

            // check if there is data to update
            if (company.Name.Equals(companyToCompare.Name) &&
                company.Type == companyToCompare.Type &&
                company.ParentCompanyId == companyToCompare.ParentCompanyId &&
                company.Earnings.Equals(companyToCompare.Earnings))
            {
                return(false);
            }

            // is valid subsidiary company
            if (company.Type == CompanyTypes.Subsidiary && companyToCompare.HasChildCompany)
            {
                return(false);
            }

            // check if a parent company can have a main company as a child
            if (company.Type == CompanyTypes.Main && company.IsWithParent(CompanyAction.Update))
            {
                return(false);
            }

            return(true);
        }
        // is a company to be added is valid
        public static bool IsValidToAdd(this CompanyModel company)
        {
            if (company.Name.Equals(String.Empty))
            {
                return(false);
            }

            if (company.Type == CompanyTypes.Main && company.IsWithParent(CompanyAction.Add))
            {
                company.ParentCompanyId = null;
            }
            return(true);
        }