Microsoft.Legal.MatterCenter.ValidationFunctions.MatterMetadataValidation C# (CSharp) Method

MatterMetadataValidation() private method

Validates meta-data of a matter and returns the validation status (success/failure).
private MatterMetadataValidation ( Matter matter, Client client, int methodNumber, MatterConfigurations matterConfigurations ) : GenericResponseVM
matter Microsoft.Legal.MatterCenter.Models.Matter Matter object containing Matter data
client Microsoft.Legal.MatterCenter.Models.Client
methodNumber int Number indicating which method needs to be validated
matterConfigurations Microsoft.Legal.MatterCenter.Models.MatterConfigurations
return Microsoft.Legal.MatterCenter.Models.GenericResponseVM
        internal GenericResponseVM MatterMetadataValidation(Matter matter, Client client, 
            int methodNumber, MatterConfigurations matterConfigurations)
        {
            GenericResponseVM genericResponseVM = null;
            genericResponseVM = MatterNameValidation(matter);
            if (genericResponseVM!=null)
            {
                return genericResponseVM;
            }
            if (int.Parse(ServiceConstants.ProvisionMatterCreateMatter, CultureInfo.InvariantCulture) == methodNumber || 
                int.Parse(ServiceConstants.ProvisionMatterAssignContentType, CultureInfo.InvariantCulture) == methodNumber || 
                int.Parse(ServiceConstants.ProvisionMatterUpdateMetadataForList, CultureInfo.InvariantCulture) == methodNumber)
            {
                if (string.IsNullOrWhiteSpace(matter.Id))
                {   
                    return GenericResponse(errorSettings.IncorrectInputMatterIdCode, errorSettings.IncorrectInputMatterIdMessage);
                }
                else
                {
                    var matterId = Regex.Match(matter.Id, matterSettings.SpecialCharacterExpressionMatterId, RegexOptions.IgnoreCase);
                    if (int.Parse(matterSettings.MatterIdLength, CultureInfo.InvariantCulture) < matter.Id.Length || !matterId.Success)
                    {     
                        return GenericResponse(errorSettings.IncorrectInputMatterIdCode, errorSettings.IncorrectInputMatterIdMessage);
                    }
                }
            }
            if (int.Parse(ServiceConstants.ProvisionMatterCreateMatter, CultureInfo.InvariantCulture) == methodNumber || 
                int.Parse(ServiceConstants.ProvisionMatterShareMatter, CultureInfo.InvariantCulture) == methodNumber || 
                int.Parse(ServiceConstants.ProvisionMatterMatterLandingPage, CultureInfo.InvariantCulture) == methodNumber)
            {
                genericResponseVM = MatterDetailsValidation(matter, client, methodNumber, matterConfigurations);
                if (genericResponseVM!=null)
                {
                    return genericResponseVM;
                }
            }
            try
            {
                if (!(int.Parse(ServiceConstants.ProvisionMatterCheckMatterExists, CultureInfo.InvariantCulture) == methodNumber) && 
                    !(int.Parse(ServiceConstants.ProvisionMatterAssignContentType, CultureInfo.InvariantCulture) == methodNumber))
                {
                    if (0 >= matter.AssignUserNames.Count())
                    {                                                
                        return GenericResponse(errorSettings.IncorrectInputUserNamesCode, errorSettings.IncorrectInputUserNamesMessage);
                    }
                    else
                    {
                        IList<string> userList = matter.AssignUserNames.SelectMany(x => x).Distinct().ToList();
                        //ToDo: Need to know the use of this method
                        matterRespository.ResolveUserNames(client, userList).FirstOrDefault();
                    }
                }
            }
            catch (Exception)
            {                
                return GenericResponse(errorSettings.IncorrectInputUserNamesCode, errorSettings.IncorrectInputUserNamesMessage);
            }

            if (int.Parse(ServiceConstants.ProvisionMatterAssignUserPermissions, CultureInfo.InvariantCulture) == methodNumber || 
                int.Parse(ServiceConstants.ProvisionMatterMatterLandingPage, CultureInfo.InvariantCulture) == methodNumber || 
                int.Parse(ServiceConstants.EditMatterPermission, CultureInfo.InvariantCulture) == methodNumber)
            {
                GenericResponseVM genericResponse = CheckUserPermission(matter);
                if (genericResponse!=null)
                {
                    return genericResponse;
                }
            }
            if (int.Parse(ServiceConstants.ProvisionMatterAssignContentType, CultureInfo.InvariantCulture) == methodNumber || 
                int.Parse(ServiceConstants.ProvisionMatterShareMatter, CultureInfo.InvariantCulture) == methodNumber)
            {
                GenericResponseVM genericResponse = ValidateContentType(matter);
                if (genericResponse!=null)
                {
                    return genericResponse;
                }
            }
            return genericResponseVM;
        }