示例#1
0
        //--V469-583-S
        internal static WsModel GetWs_Admin(string wsId, out IManWorkspace imWsOut, WsLoadType wsLoadType = WsLoadType.ALL, bool newSession = false)
        {
            IManWorkspace imWs = null;

            //imWs = WsUtility.GetObjectByID<IManWorkspace>(wsId, newSession);
            imWs = WsUtility.GetObjectByID_Admin <IManWorkspace>(wsId, newSession);

            imWsOut = imWs;

            if (imWs == null)
            {
                return(null);
            }

            var wsModel = (new WsModel
            {
                IsLoaded = wsLoadType != WsLoadType.None,
                Description = imWs.Description,
                Name = imWs.Name,
                ObjectID = imWs.ObjectID,
                Owner = WsUtility.GetWsUser(imWs.Owner),
                SubType = imWs.SubType,
                WorkspaceID = imWs.WorkspaceID,

                WsProfile = WsUtility.ToLoad(wsLoadType, WsComponentType.Profile) ? GetWsProfile(imWs.Profile, imWs) : null,
                WsFldrs = WsUtility.ToLoad(wsLoadType, WsComponentType.Fldrs) ? GetWsFldrs(imWs.SubFolders, string.Empty) : null,
                WsGroups = WsUtility.ToLoad(wsLoadType, WsComponentType.Groups) ? GetSecurity(imWs.Security) : null
            });

            return(wsModel);
        }
示例#2
0
        internal static WsProfile GetWsProfile(IManProfile imProf, IManWorkspace imWs)
        {
            var wsProf = new WsProfile();

            wsProf = PopulateCustomAttr(wsProf, imProf);

            wsProf.IsUnderPreservation = wsProf.Status.IndexOf("UNDER PRESERVATION", StringComparison.OrdinalIgnoreCase) != -1; //wsProf.Status.Equals("UNDER PRESERVATION", StringComparison.OrdinalIgnoreCase);

            var clientCustAttr = WsUtility.GetWsCustAttr(wsProf.GetType().GetProperty("Client"), wsProf.Client);

            wsProf.ClientDesc = clientCustAttr == null ? string.Empty : clientCustAttr.Description;

            if (!string.IsNullOrWhiteSpace(wsProf.Partner))
            {
                wsProf.PartnerDesc = WsUtility.GetWsUser(wsProf.Partner, ImDbType.Active);
            }

            if (!string.IsNullOrWhiteSpace(wsProf.Manager))
            {
                wsProf.ManagerDesc = WsUtility.GetWsUser(wsProf.Manager, ImDbType.Active);
            }

            //wsProf.WsProfile_TP = GetWsProfile_TP(wsProf.EngNum);

            //wsProf.KPMGOnly = GetKPMGOnlyFlag(wsProf.EngNum);

            return(wsProf);
        }
示例#3
0
        private static IManDocumentFolder GetWsFldr(IManWorkspace imWs, string folderPath)
        {
            var spPath = folderPath.Split('/').ToList();

            var imFldr = (IManFolder)imWs;

            spPath.ForEach(x => {
                imFldr = GetIManFolders(imFldr, x);
            });

            return((IManDocumentFolder)imFldr);
        }
示例#4
0
        public static void Move_YrEnd_Audit_RET_N_ENG_To_ElecWp(double retDocNum, double engDocNum, double engNum)
        {
            IManDocument imRetDoc = WsUtility.GetObjectByID <IManDocument>(WsUtility.GetWsObjectTypeId(WsObjectType.File, retDocNum));
            IManDocument imEngDoc = WsUtility.GetObjectByID <IManDocument>(WsUtility.GetWsObjectTypeId(WsObjectType.File, engDocNum));

            IManWorkspace imWs = WsUtility.GetObjectByID <IManWorkspace>(WsUtility.GetWsObjectTypeId(WsObjectType.Workspace, engNum));

            IManDocumentFolder imFldrPeriodEndAudit = WsUtility.GetWsFldr(imWs, WsFldrType.PeriodEndAudit);
            IManDocumentFolder imRetFldr            = null;
            IManDocumentFolder imEngFldr            = null;
            IManDocumentFolder imElecWpFldr         = null;

            foreach (IManDocumentFolder docFldr in imFldrPeriodEndAudit.SubFolders)
            {
                if (docFldr.Name.Equals("RET Files", StringComparison.OrdinalIgnoreCase))
                {
                    imRetFldr = docFldr;
                }
                else if (docFldr.Name.Equals("ENG Files", StringComparison.OrdinalIgnoreCase))
                {
                    imEngFldr = docFldr;
                }
                else if (docFldr.Name.Equals("Electronic Workpapers (Maintained Outside of eAudIT)", StringComparison.OrdinalIgnoreCase))
                {
                    imElecWpFldr = docFldr;
                }
            }

            IManDocuments imElecWpDocs = imElecWpFldr == null ? null : (IManDocuments)imElecWpFldr.Contents;
            IManDocuments imRetDocs    = imRetFldr == null ? null : (IManDocuments)imRetFldr.Contents;
            IManDocuments imEngDocs    = imEngFldr == null ? null : (IManDocuments)imEngFldr.Contents;

            if (imElecWpDocs != null)
            {
                imElecWpDocs.AddDocumentReference(imRetDoc);
            }

            if (imRetDocs != null)
            {
                imRetDocs.RemoveByObject(imRetDoc);
            }

            if (imElecWpDocs != null)
            {
                imElecWpDocs.AddDocumentReference(imEngDoc);
            }

            if (imEngDocs != null)
            {
                imEngDocs.RemoveByObject(imEngDoc);
            }
        }
示例#5
0
        public bool Less(IManObject obj1, IManObject obj2)
        {
            IManWorkspace work1 = (IManWorkspace)obj1, work2 = (IManWorkspace)obj2;

            if (String.Compare(work1.Name.ToString(), work2.Name.ToString(), true) < 0)         //  int Compare(string strA, string strB, bool ignoreCase)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#6
0
        private static IManDocumentType GetWsDocType(IManWorkspace imWs, string fileName)
        {
            IManDocumentTypes imDocTypes = imWs.Database.SearchDocumentTypes(string.Empty, imSearchAttributeType.imSearchBoth, true);

            foreach (IManDocumentType imDocType in imDocTypes)
            {
                if (imDocType.ApplicationExtension.Equals(fileName.FileExtn(), StringComparison.OrdinalIgnoreCase))
                {
                    return(imDocType);
                }
            }

            return(null);
        }
示例#7
0
        public static string GetFldrPath(IManWorkspace ws, IManDocumentFolder fldr)
        {
            var iMFldr = (IManFolder)ws;

            var fldrPath = "";
            bool isFound = false;

            foreach (IManFolder childFldr in iMFldr.SubFolders)
            {
                fldrPath = childFldr.Name;

                if (childFldr.ObjectID.IsEquals(fldr.ObjectID))
                {
                    break;
                }

                HandleFolderTree(item =>
                {
                    if (item.ObjectID.IsEquals(fldr.ObjectID))
                    {
                        fldrPath = fldrPath + "/" + item.Name;
                        isFound = true;
                        return true;
                    }
                    else
                    {
                        if (item.SubFolders.Count > 0)
                        {
                            fldrPath = fldrPath + "/" + item.Name;
                        }
                        else
                        {
                            fldrPath = string.Join("/", fldrPath.Split('/').Take(fldrPath.Split('/').Length - 1));
                            fldrPath = string.IsNullOrWhiteSpace(fldrPath) ? childFldr.Name : fldrPath;
                        }
                        return false;
                    }

                }, childFldr, fldr.ObjectID);

                if (isFound)
                    break;
            }

            return fldrPath;
        }
示例#8
0
        private static IManDocumentFolder GetIMDocFolder(IManWorkspace imWs, string folderPath)
        {
            string[] spPath = null;
            if ("1 - Final Client Reports/Deliverables".Equals(folderPath, StringComparison.OrdinalIgnoreCase))
            {
                spPath = new string[] { folderPath };
            }
            else
            {
                spPath = folderPath.Split('/');
            }


            var imFldr = (IManFolder)imWs;

            spPath.ToList().ForEach(x =>
            {
                imFldr = GetIMFolder(imFldr, x);
            });

            return(imFldr == null ? null : (IManDocumentFolder)imFldr);
        }
示例#9
0
        public static void UploadDocument(string engNum, string fileNameWithLocalPath, string iMFolderPath)
        {
            //
            var projectIdForEngNum = WsUtility.GetEngIdForEngNum(new List <string> {
                engNum
            });

            if (projectIdForEngNum.Count == 0)
            {
                return;
            }

            var wsId = WsUtility.GetWsObjectTypeId(WsObjectType.Workspace, projectIdForEngNum[0].EngId);
            //

            IManWorkspace imWs = WsUtility.GetObjectByID <IManWorkspace>(wsId, isAdmin: true);

            IManDocumentFolder imFldr = GetWsFldr(imWs, iMFolderPath);

            IManDocument imDoc = imFldr.Database.CreateDocument();

            WsProfile wsProfile = Workspace.GetWsProfile(imWs.Profile, imWs);

            imDoc.SetAttributeByID(imProfileAttributeID.imProfileDescription, Path.GetFileName(fileNameWithLocalPath));

            imDoc.SetAttributeByID(imProfileAttributeID.imProfileType, GetWsDocType(imWs, Convert.ToString(imDoc.GetAttributeValueByID(imProfileAttributeID.imProfileDescription))));

            imDoc.SetAttributeByID(imProfileAttributeID.imProfileAuthor, imWs.Owner.Name);
            imDoc.SetAttributeByID(imProfileAttributeID.imProfileOperator, imWs.Owner.Name);
            imDoc.SetAttributeByID(imProfileAttributeID.imProfileClass, AmConst.CONST_IMPROFILECLASS);
            imDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom7, AmConst.CONST_IMPROFILECUSTOM7);
            imDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom1, wsProfile.Client);
            imDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom2, wsProfile.EngNum);

            if (!string.IsNullOrWhiteSpace(wsProfile.EngFunction))
            {
                imDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom3, wsProfile.EngFunction);
            }
            else
            {
                imDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom3, AmConst.CONST_IMPROFILECUSTOM3);
            }

            foreach (IManAdditionalProperty imAddProp in imFldr.AdditionalProperties)
            {
                if (imAddProp == null)
                {
                    continue;
                }

                int attID = Convert.ToInt32(imAddProp.Name.Substring(imAddProp.Name.LastIndexOf('_') + 1));
                imProfileAttributeID imProfAttr = (imProfileAttributeID)attID;

                if (imAddProp.Value != AmConst.CONST_WORKSPACE_VALUE)
                {
                    //Date
                    if (imProfAttr == imProfileAttributeID.imProfileCustom21 ||
                        imProfAttr == imProfileAttributeID.imProfileCustom22 ||
                        imProfAttr == imProfileAttributeID.imProfileCustom23 ||
                        imProfAttr == imProfileAttributeID.imProfileCustom24)
                    {
                        DateTime parsedTime;
                        if (DateTime.TryParse(imAddProp.Value, out parsedTime))
                        {
                            imDoc.SetAttributeByID(imProfAttr, parsedTime);
                        }
                        else
                        {
                            imDoc.SetAttributeByID(imProfAttr, null);
                        }
                    }
                    //Boolean
                    else if (imProfAttr == imProfileAttributeID.imProfileCustom25 ||
                             imProfAttr == imProfileAttributeID.imProfileCustom26 ||
                             imProfAttr == imProfileAttributeID.imProfileCustom27 ||
                             imProfAttr == imProfileAttributeID.imProfileCustom28)
                    {
                        if (imAddProp.Value != null && imAddProp.Value.ToLower() == "true")
                        {
                            imDoc.SetAttributeByID(imProfAttr, true);
                        }
                        else
                        {
                            imDoc.SetAttributeByID(imProfAttr, false);
                        }
                    }
                    else
                    {
                        imDoc.SetAttributeByID(imProfAttr, imAddProp.Value);
                    }
                }
                else
                {
                    imDoc.SetAttributeByID(imProfAttr, imFldr.Workspace.Profile.GetAttributeValueByID(imProfAttr));
                }
            }

            //string tempFile = System.IO.Path.GetTempFileName();
            //System.IO.File.WriteAllText(tempFile, wsLog.WsLogUseWhat == WsLogUseWhat.Email ? wsLog.MailBody : wsLog.ToString());

            IManCheckinResult checkInResult = imDoc.CheckInWithResults(fileNameWithLocalPath, imCheckinDisposition.imCheckinNewDocument, imCheckinOptions.imDontKeepCheckedOut);

            if (checkInResult.Succeeded)
            {
                AddSecurityToDoc(imDoc, imFldr);

                IManDocuments imDocs = (IManDocuments)imFldr.Contents;
                if (null != imDocs)
                {
                    imDocs.AddDocumentReference(checkInResult.Result);
                }
            }
            else
            {
                //throw new LogOnlyException(string.Format("Error creating IManage log file => {0}", checkInResult.ErrorMessage));
                //AuditManager.Common.DbLog.LogToElmah(string.Format("Error creating IManage log file => {0}", checkInResult.ErrorMessage), httpContext);
            }

            //AuditManager.Common.DbLog.LogToElmah(string.Format("Error creating IManage log file => {0}", "checkInResult.ErrorMessage"), httpContext);
            //throw new LogOnlyException(string.Format("Error creating IManage log file => {0}", "checkInResult.ErrorMessage"));
        }
示例#10
0
        private static T PopulateCustomAttr <T>(T type, dynamic imObj)
        {
            foreach (PropertyInfo pI in type.GetType().GetProperties())
            {
                if (Attribute.IsDefined(pI, typeof(ImProfileAttrInfo), false))
                {
                    var cA = (ImProfileAttrInfo)pI.GetCustomAttributes(typeof(ImProfileAttrInfo), false)[0];

                    dynamic imProfAttrVal = null;

                    if ((imObj as IManProfile) != null)
                    {
                        IManProfile imp = (IManProfile)imObj;
                        imProfAttrVal = imp.GetAttributeValueByID((imProfileAttributeID)Enum.Parse(typeof(imProfileAttributeID), cA.AttrImProfileEnum));
                    }
                    else if ((imObj as IManWorkspace) != null)
                    {
                        IManWorkspace imws = (IManWorkspace)imObj;
                        imProfAttrVal = imws.GetAttributeValueByID((imProfileAttributeID)Enum.Parse(typeof(imProfileAttributeID), cA.AttrImProfileEnum));
                    }
                    else if ((imObj as IManDocument) != null)
                    {
                        IManDocument imd = (IManDocument)imObj;
                        imProfAttrVal = imd.GetAttributeValueByID((imProfileAttributeID)Enum.Parse(typeof(imProfileAttributeID), cA.AttrImProfileEnum));
                    }
                    else
                    {
                        IManProfile imp = (IManProfile)imObj;
                        imProfAttrVal = imp.GetAttributeValueByID((imProfileAttributeID)Enum.Parse(typeof(imProfileAttributeID), cA.AttrImProfileEnum));
                    }

                    if (imProfAttrVal == null)
                    {
                        continue;
                    }

                    if (cA.AttrDataType == typeof(bool))
                    {
                        bool b;
                        if (bool.TryParse(imProfAttrVal.ToString(), out b))
                        {
                            pI.SetValue(type, b);
                        }
                        else
                        {
                            pI.SetValue(type, false);
                        }
                    }
                    else if (cA.AttrDataType == typeof(DateTime))
                    {
                        if (imProfAttrVal == null || imProfAttrVal.Date == null)
                        {
                            pI.SetValue(type, null);
                        }
                        else
                        {
                            DateTime dt;
                            if (DateTime.TryParse(imProfAttrVal.Date.ToString(), out dt))
                            {
                                pI.SetValue(type, dt);
                            }
                            else
                            {
                                pI.SetValue(type, null);
                            }
                        }
                    }
                    else
                    {
                        pI.SetValue(type, imProfAttrVal.ToString());
                    }
                }
            }

            return(type);
        }
示例#11
0
        public static IManDocumentFolder GetIMFldr(IManWorkspace ws, string folderPath)
        {
            string[] spPath = null;
            if (IMConstant.CONST_FINAL_CLIENT_REPORTS_DELIVERABLES.IsEquals(folderPath))
            {
                spPath = new string[] { folderPath };
            }
            else
            {
                spPath = folderPath.Split('/');
            }

            var iMFldr = (IManFolder)ws;

            spPath.ToList().ForEach(x =>
            {
                iMFldr = GetIMFldr(iMFldr, x);

            });

            return iMFldr == null ? null : (IManDocumentFolder)iMFldr;
        }
示例#12
0
        public static List <WsModel> UpdateWs(WsUpdateModel wsUpdateModel, UpdateProfileFrom updateProfileFrom)
        {
            var wsModelIn = wsUpdateModel.WsModel;

            IManWorkspace imWs = null;

            //--V469-583-S
            var wsModel = Workspace.GetWs(wsModelIn.ObjectID, out imWs, WsLoadType.ALL, isAdmin: true);

            //var wsModel = Workspace.GetWs_Admin(wsModelIn.ObjectID, out imWs, WsLoadType.ALL);
            //--V469-583-E

            if (wsModelIn.WsProfile.IsUnderPreservation != wsModel.WsProfile.IsUnderPreservation)
            {
                if (wsModelIn.WsProfile.IsUnderPreservation)
                {
                    if (wsModel.WsProfile.Status.StartsWith("closed", StringComparison.OrdinalIgnoreCase))
                    {
                        imWs.SetAttributeByID(imProfileAttributeID.imProfileCustom11, "CLOSED - UNDER PRESERVATION");
                    }
                    else
                    {
                        imWs.SetAttributeByID(imProfileAttributeID.imProfileCustom11, "OPEN - UNDER PRESERVATION");
                    }
                }
                else
                {
                    imWs.SetAttributeByID(imProfileAttributeID.imProfileCustom11, wsModel.WsProfile.Status.Replace(" - UNDER PRESERVATION", ""));
                }

                var wsGLog = new WsGenericLog();
                wsGLog.ActionBy          = AmUtil.GetCurrentUser;
                wsGLog.Id                = null;
                wsGLog.Name              = null;
                wsGLog.ActionInfo        = wsModelIn.WsProfile.IsUnderPreservation ? "ON" : "OFF";
                wsGLog.AdditionalInfo    = null;
                wsGLog.Comment           = wsUpdateModel.PreservationComment;
                wsGLog.OldValue          = wsModel.WsProfile.IsUnderPreservation.ToString();
                wsGLog.NewValue          = wsModelIn.WsProfile.IsUnderPreservation.ToString();
                wsGLog.WsLogActivityType = WsLogActivityType.Preservation;

                WsUtility.CreateWsLog(wsModelIn.ObjectID, wsGLog);

                //Mail
                var wsAdmin    = WsUtility.GetEmailRecepients(wsModel, EmailRecepientType.ADMIN);
                var recepients = WsUtility.GetEmailRecepients(wsModel, EmailRecepientType.MEMBERS);

                var mailBody = AmUtil.SendMail_Preservation(wsModelIn.WsProfile.IsUnderPreservation ?
                                                            WsActivityType.WSPROFILE_PRESERVATION_ON.ToString() : WsActivityType.WSPROFILE_PRESERVATION_OFF.ToString(),
                                                            wsModel.WsProfile.EngNum, wsModel.Name, wsModel.WsProfile.ClientDesc, recepients, wsAdmin,
                                                            wsModelIn.WsProfile.IsUnderPreservation ? "Workspace Flagged for Preservation" : "Workspace Preservation Removed");

                wsGLog.WsLogActivityType = wsModelIn.WsProfile.IsUnderPreservation ?
                                           WsLogActivityType.PreservationONEmail : WsLogActivityType.PreservationOFFEmail;
                WsUtility.CreateEmailLog(wsModelIn.ObjectID, mailBody, wsGLog);

                //
            }

            if (wsModelIn.WsProfile.EventTrgDate != wsModel.WsProfile.EventTrgDate)
            {
                imWs.SetAttributeByID(imProfileAttributeID.imProfileCustom23, wsModelIn.WsProfile.EventTrgDate);

                var wsGLog = new WsGenericLog();
                wsGLog.ActionBy          = AmUtil.GetCurrentUser;
                wsGLog.Id                = null;
                wsGLog.Name              = null;
                wsGLog.ActionInfo        = null;
                wsGLog.AdditionalInfo    = null;
                wsGLog.Comment           = wsUpdateModel.PreservationComment;
                wsGLog.OldValue          = wsModel.WsProfile.EventTrgDate.ToString();
                wsGLog.NewValue          = wsModelIn.WsProfile.EventTrgDate.ToString();
                wsGLog.WsLogActivityType = WsLogActivityType.EventTrgDate;

                WsUtility.CreateWsLog(wsModelIn.ObjectID, wsGLog);
            }

            if (wsModelIn.WsProfile.IsKDrive != wsModel.WsProfile.IsKDrive)
            {
                imWs.SetAttributeByID(imProfileAttributeID.imProfileCustom26, wsModelIn.WsProfile.IsKDrive);

                var wsGLog = new WsGenericLog();
                wsGLog.ActionBy          = AmUtil.GetCurrentUser;
                wsGLog.Id                = null;
                wsGLog.Name              = null;
                wsGLog.ActionInfo        = null;
                wsGLog.AdditionalInfo    = null;
                wsGLog.Comment           = wsUpdateModel.PreservationComment;
                wsGLog.OldValue          = wsModel.WsProfile.IsKDrive.ToString();
                wsGLog.NewValue          = wsModelIn.WsProfile.IsKDrive.ToString();
                wsGLog.WsLogActivityType = WsLogActivityType.ChangeStorageLocation;

                WsUtility.CreateWsLog(wsModelIn.ObjectID, wsGLog);
            }

            if (wsModelIn.WsProfile.IsServer2 != wsModel.WsProfile.IsServer2)
            {
                imWs.SetAttributeByID(imProfileAttributeID.imProfileCustom12, wsModelIn.WsProfile.IsServer2.ToString());

                var wsGLog = new WsGenericLog();
                wsGLog.ActionBy          = AmUtil.GetCurrentUser;
                wsGLog.Id                = null;
                wsGLog.Name              = null;
                wsGLog.ActionInfo        = null;
                wsGLog.AdditionalInfo    = null;
                wsGLog.Comment           = wsUpdateModel.PreservationComment;
                wsGLog.OldValue          = wsModel.WsProfile.IsServer2.ToString();
                wsGLog.NewValue          = wsModelIn.WsProfile.IsServer2.ToString();
                wsGLog.WsLogActivityType = WsLogActivityType.Server2;

                WsUtility.CreateWsLog(wsModelIn.ObjectID, wsGLog);
            }

            if (wsModelIn.WsProfile.RetPolicy != wsModel.WsProfile.RetPolicy)
            {
                imWs.SetAttributeByID(imProfileAttributeID.imProfileCustom7, wsModelIn.WsProfile.RetPolicy.ToString());

                var wsGLog = new WsGenericLog();
                wsGLog.ActionBy          = AmUtil.GetCurrentUser;
                wsGLog.Id                = null;
                wsGLog.Name              = null;
                wsGLog.ActionInfo        = null;
                wsGLog.AdditionalInfo    = null;
                wsGLog.Comment           = wsUpdateModel.RetentionComment;
                wsGLog.OldValue          = wsModel.WsProfile.RetPolicy.ToString();
                wsGLog.NewValue          = wsModelIn.WsProfile.RetPolicy.ToString();
                wsGLog.WsLogActivityType = WsLogActivityType.RetPolicy;

                WsUtility.CreateWsLog(wsModelIn.ObjectID, wsGLog);
            }

            //wsNew.Profile.SetAttributeByID(imProfileAttributeID.imProfileCustom7, "7YEARS");

            imWs.Update();

            WsUtility.UpdateWsProfile(wsUpdateModel, updateProfileFrom);

            return(IM.Mgr.Workspace.GetWs(wsModelIn.ObjectID));
        }
示例#13
0
        public static void InitiateClosure(InitiateClosureWsModel initiateClosureWsModel)
        {
            var wsModelIn     = initiateClosureWsModel.WsModel;
            var largeRetFiles = initiateClosureWsModel.LargeRetFiles;
            var comment       = initiateClosureWsModel.Comment;

            IManWorkspace imWs = null;

            var wsModel = Workspace.GetWs(wsModelIn.ObjectID, out imWs, WsLoadType.ALL);

            //List<WsFile> wsFiles = new List<WsFile>();

            //WsFldr wsFldr = new WsFldr();
            //wsFldr.WsFldrs = wsModelIn.WsFldrs;

            //WsUtility.GetWsFiles(item =>
            //{
            //    if (item.WsFiles != null && item.WsFiles.Count > 0)
            //    {
            //        foreach (var wsFile in item.WsFiles)
            //        {
            //            if (wsFile.IsIncludedInClosure)
            //                wsFiles.Add(wsFile);
            //        }
            //    }
            //}, wsFldr);

            List <WsFile> wsFiles = GetAllFilesFromWs(wsModelIn);

            wsFiles = wsFiles.Where(x => x.IsIncludedInClosure).ToList();

            var wsGLog = new WsGenericLog();

            wsGLog.ActionBy          = AmUtil.GetCurrentUser;
            wsGLog.Id                = null;
            wsGLog.Name              = null;
            wsGLog.ActionInfo        = null;
            wsGLog.AdditionalInfo    = null;
            wsGLog.Comment           = comment;
            wsGLog.OldValue          = null;
            wsGLog.NewValue          = null;
            wsGLog.WsLogActivityType = WsLogActivityType.Closure;

            var sbFileInfo = new StringBuilder();

            sbFileInfo.AppendLine("Event trigger Date for this closure: " + wsModelIn.WsProfile.EventTrgDate);
            sbFileInfo.AppendLine();
            sbFileInfo.AppendLine(AmUtil.GetLineSeperator);
            sbFileInfo.AppendLine();
            var sbClosureMailInfo = new StringBuilder();

            foreach (var item in wsFiles)
            {
                IManDocument imDoc = WsUtility.GetObjectByID <IManDocument>(item.ObjectID, isAdmin: true);
                if (WsValidation.ValidateDoc(imDoc, imDocumentOperation.imFreezeDocumentOp) == WsDocDelStatusType.Success)
                {
                    var wsFile = Workspace.GetWsFile(imDoc);

                    //if (wsFile.IsLocked) { }

                    //if (wsFile.IsCheckedOut)
                    //{
                    //    CheckInDoc(imDoc);
                    //}

                    //if (wsFile.IsDeleted) { }

                    //if (wsFile.IsRecord) { }

                    sbFileInfo.AppendLine("DocNum: " + wsFile.Number);
                    sbFileInfo.AppendLine("DocName: " + wsFile.Description.FileNameWithExtn(wsFile.Extn));
                    sbFileInfo.AppendLine("DocPath: " + item.FilePath);
                    sbFileInfo.AppendLine("IsLocked: " + wsFile.IsLocked);
                    sbFileInfo.AppendLine("IsCheckedOut: " + wsFile.IsCheckedOut);
                    sbFileInfo.AppendLine("IsDeleted: " + wsFile.IsDeleted);
                    sbFileInfo.AppendLine("IsRecord: " + wsFile.IsRecord);
                    sbFileInfo.AppendLine();

                    imDoc.SetAttributeByID(imProfileAttributeID.imProfileFrozen, true);

                    //imDoc.HistoryList.Add(imHistEvent.imHistoryFrozen, 0, 0, "Audit Manager", "eAudit closure", String.Empty, String.Empty, String.Empty);
                    AddImHistoryInfo(imDoc, HistoryInfoType.CLOSURE);

                    IManProfileUpdateResult res = imDoc.UpdateWithResults();
                    if (res.Succeeded)
                    {
                        sbFileInfo.AppendLine("ClosureStatus: Success");
                    }
                    else
                    {
                        sbFileInfo.AppendLine("ClosureStatus: Failure");
                    }

                    sbFileInfo.AppendLine();
                    sbFileInfo.AppendLine(AmUtil.GetLineSeperator);
                    sbFileInfo.AppendLine();

                    sbClosureMailInfo.Append("<tr><td align='center' valign='middle'>");
                    sbClosureMailInfo.Append(wsFile.Description.FileNameWithExtn(wsFile.Extn));
                    sbClosureMailInfo.Append("</td><td align='center' valign='middle'>");
                    sbClosureMailInfo.Append(item.FilePath.Remove(0, 4));
                    sbClosureMailInfo.Append("</td><td align='center' valign='middle'>");
                    if (wsFile.IsRecord)
                    {
                        sbClosureMailInfo.Append("X");
                    }
                    sbClosureMailInfo.Append("</td></tr>");
                }
            }

            if (largeRetFiles != null && largeRetFiles.Count > 0)
            {
                int idx = 0;
                sbFileInfo.AppendLine("Large Retention file included in the closure.");
                sbFileInfo.AppendLine();
                largeRetFiles.ForEach(x => sbFileInfo.AppendLine(++idx + ". " + x));

                foreach (var item in largeRetFiles)
                {
                    sbClosureMailInfo.Append("<tr align='center'><td><p>");
                    sbClosureMailInfo.Append(item);
                    sbClosureMailInfo.Append("</p></td><td><p>");
                    sbClosureMailInfo.Append("Large file retention server");
                    sbClosureMailInfo.Append("</p></td><td align='center' valign='middle'><p>");
                    sbClosureMailInfo.Append("</p></td></tr>");
                }
            }

            wsGLog.AdditionalInfo = sbFileInfo.ToString();

            WsUtility.CreateWsLog(wsModelIn.ObjectID, wsGLog);

            var recepients = WsUtility.GetEmailRecepients(wsModel, EmailRecepientType.MANAGER_N_PARTNER_N_ADMIN);

            var mailBody = AmUtil.SendMail_Closure(WsActivityType.CLOSURE_INITIATE.ToString(), wsModel.WsProfile.EngNum, wsModel.Name, recepients, sbClosureMailInfo.ToString());

            wsGLog.WsLogActivityType = WsLogActivityType.ClosureConfirmEmail;
            WsUtility.CreateEmailLog(wsModelIn.ObjectID, mailBody, wsGLog);

            WsUtility.SaveClosureInfo(wsModel.WsProfile.EngNum,
                                      string.Format("{0}|{1}", string.Join(",", wsFiles.Select(x => x.Number).ToList()),
                                                    ((initiateClosureWsModel.LargeRetFiles == null || initiateClosureWsModel.LargeRetFiles.Count == 0) ?
                                                     string.Empty : string.Join(",", initiateClosureWsModel.LargeRetFiles))
                                                    ),
                                      string.Join(",", recepients.Select(x => x.Item2).ToList()),
                                      mailBody, initiateClosureWsModel.Comment,
                                      initiateClosureWsModel.LargeRetFiles == null ? false : (initiateClosureWsModel.LargeRetFiles.Count > 0));

            //return IM.Mgr.Workspace.GetWs(wsModelIn.ObjectID);
        }
示例#14
0
        private List<WsUser> GetPartnerNManager(IManWorkspace ws)
        {
            List<WsUser> wsUsers = new List<WsUser>();

            var partnerId = ws.GetAttributeValueByID(imProfileAttributeID.imProfileCustom4);

            if (partnerId != null)
            {
                var partner = GetWsUser(partnerId.ToString(), true);
                partner.UserType = UserType.Partner;
                wsUsers.Add(partner);
            }

            var managerId = ws.GetAttributeValueByID(imProfileAttributeID.imProfileCustom6);

            if (managerId != null)
            {
                var manager = GetWsUser(managerId.ToString(), true);
                manager.UserType = UserType.Manager;
                wsUsers.Add(manager);
            }

            return wsUsers;
        }
示例#15
0
        private static IManDocumentFolder GetWsFldr(IManWorkspace imWs, string folderPath)
        {
            var spPath = folderPath.Split('/').ToList();

            var imFldr = (IManFolder)imWs;

            spPath.ForEach(x => {

                imFldr = GetIManFolders(imFldr, x);

            });

            return (IManDocumentFolder)imFldr;
        }
示例#16
0
        private static IManDocumentType GetWsDocType(IManWorkspace imWs, string fileName)
        {
            IManDocumentTypes imDocTypes = imWs.Database.SearchDocumentTypes(string.Empty, imSearchAttributeType.imSearchBoth, true);

            foreach (IManDocumentType imDocType in imDocTypes)
            {
                if (imDocType.ApplicationExtension.Equals(fileName.FileExtn(), StringComparison.OrdinalIgnoreCase))
                {
                    return imDocType;
                }
            }

            return null;
        }
示例#17
0
        private static IManDocumentFolder GetIMDocFolder(IManWorkspace imWs, string folderPath)
        {
            string[] spPath = null;
            if ("1 - Final Client Reports/Deliverables".Equals(folderPath, StringComparison.OrdinalIgnoreCase))
            {
                spPath = new string[]{folderPath};
            }
            else
            {
                spPath = folderPath.Split('/');
            }

            var imFldr = (IManFolder)imWs;

            spPath.ToList().ForEach(x =>
            {

                imFldr = GetIMFolder(imFldr, x);

            });

            return imFldr == null ? null : (IManDocumentFolder)imFldr;
        }
示例#18
0
文件: Create.cs 项目: mengithub/XP-2
        private int? Create(string docNameWithLocalPath, IManWorkspace iMWs, IManDocumentFolder iMFolder, DateTime startTime, long step1TimeInSec)
        {
            IManDocument iMDoc = _iMUtility.GetIMDb.CreateDocument();

            iMDoc.SetAttributeByID(imProfileAttributeID.imProfileDescription, Path.GetFileName(docNameWithLocalPath));
            iMDoc.SetAttributeByID(imProfileAttributeID.imProfileType, GetIManDocumentType(Convert.ToString(iMDoc.GetAttributeValueByID(imProfileAttributeID.imProfileDescription))));

            iMDoc.SetAttributeByID(imProfileAttributeID.imProfileAuthor, KConfig.GetCurrentUser);
            iMDoc.SetAttributeByID(imProfileAttributeID.imProfileOperator, KConfig.GetCurrentUser);
            //iMDoc.SetAttributeByID(imProfileAttributeID.imProfileLastUser, KConfig.GetCurrentUser);

            iMDoc.SetAttributeByID(imProfileAttributeID.imProfileClass, IMConstant.CONST_IMPROFILECLASS);
            iMDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom7, IMConstant.CONST_IMPROFILECUSTOM7);

            iMDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom1,
                iMWs.Profile.GetAttributeValueByID(imProfileAttributeID.imProfileCustom1).ToString());
            iMDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom2,
                iMWs.Profile.GetAttributeValueByID(imProfileAttributeID.imProfileCustom2).ToString());

            var engFunction = iMWs.Profile.GetAttributeValueByID(imProfileAttributeID.imProfileCustom3).ToString();

            if (!string.IsNullOrWhiteSpace(engFunction))
            {
                iMDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom3, engFunction);
            }
            else
            {
                iMDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom3, IMConstant.CONST_IMPROFILECUSTOM3);
            }

            foreach (IManAdditionalProperty imAddProp in iMFolder.AdditionalProperties)
            {
                if (imAddProp == null)
                    continue;

                int attID = Convert.ToInt32(imAddProp.Name.Substring(imAddProp.Name.LastIndexOf('_') + 1));
                imProfileAttributeID imProfAttr = (imProfileAttributeID)attID;

                if (imProfAttr != imProfileAttributeID.imProfileAuthor && imProfAttr != imProfileAttributeID.imProfileAuthorDescription &&
                        imProfAttr != imProfileAttributeID.imProfileOperator && imProfAttr != imProfileAttributeID.imProfileOperatorDescription &&
                        imProfAttr != imProfileAttributeID.imProfileLastUser && imProfAttr != imProfileAttributeID.imProfileLastUserDescription)
                {

                }
                else
                {
                    continue;
                }

                if (imAddProp.Value != IMConstant.CONST_WORKSPACE_VALUE)
                {
                    //Date
                    if (imProfAttr == imProfileAttributeID.imProfileCustom21 ||
                                imProfAttr == imProfileAttributeID.imProfileCustom22 ||
                                imProfAttr == imProfileAttributeID.imProfileCustom23 ||
                                imProfAttr == imProfileAttributeID.imProfileCustom24)
                    {
                        DateTime parsedTime;
                        if (DateTime.TryParse(imAddProp.Value, out parsedTime))
                        {
                            iMDoc.SetAttributeByID(imProfAttr, parsedTime);
                        }
                        else
                        {
                            iMDoc.SetAttributeByID(imProfAttr, null);
                        }
                    }
                    //Boolean
                    else if (imProfAttr == imProfileAttributeID.imProfileCustom25 ||
                                imProfAttr == imProfileAttributeID.imProfileCustom26 ||
                                imProfAttr == imProfileAttributeID.imProfileCustom27 ||
                                imProfAttr == imProfileAttributeID.imProfileCustom28)
                    {
                        if (imAddProp.Value != null && imAddProp.Value.ToLower() == "true")
                        {
                            iMDoc.SetAttributeByID(imProfAttr, true);
                        }
                        else
                        {
                            iMDoc.SetAttributeByID(imProfAttr, false);
                        }
                    }
                    else
                    {
                        //EAUDIT ENGAGEMENT
                        //IManage.imProfileAttributeID.imProfileSubClass
                        //[NRTDocument ][SetAttributeValueByID ]No record found
                        if (imProfAttr == imProfileAttributeID.imProfileSubClass)
                        {

                        }
                        iMDoc.SetAttributeByID(imProfAttr, imAddProp.Value);
                    }
                }
                else
                {
                    iMDoc.SetAttributeByID(imProfAttr, iMFolder.Workspace.Profile.GetAttributeValueByID(imProfAttr));
                }
            }

            IManCheckinResult checkInResult = iMDoc.CheckInWithResults(docNameWithLocalPath, imCheckinDisposition.imCheckinNewDocument, imCheckinOptions.imDontKeepCheckedOut);

            if (checkInResult.Succeeded)
            {
                IMUtility2.RefileFldrSecurity2Doc(iMDoc, iMFolder);

                IManDocuments iMDocs = (IManDocuments)iMFolder.Contents;
                if (null != iMDocs)
                {
                    iMDocs.AddDocumentReference(checkInResult.Result);
                }

                if (IMConstant.CONST_IM_PROFILE_TYPE.Any(x => x.IsEquals((string)iMDoc.GetAttributeValueByID(imProfileAttributeID.imProfileType))))
                {
                    IMDBUtility.SetCOMINDEXtoY(iMDoc.Number);
                }

                CreateDocLog(docNameWithLocalPath,
                    iMWs.Profile.GetAttributeValueByID(imProfileAttributeID.imProfileCustom2).ToString(),
                    IMUtility2.GetFldrPath(iMWs, iMFolder),
                    startTime.ToTimeElapsedInSec(), step1TimeInSec, iMDoc.Number);

                return iMDoc.Number;
            }
            else
            {
                return null;
            }
        }
示例#19
0
文件: Create.cs 项目: mengithub/XP-2
        private void CreateWSGroup(IManWorkspace ws, string engNum)
        {
            foreach (IManGroupACL grpACL in ws.Security.GroupACLs)
            {
                if (grpACL.Group.Name.Substring(0, 2).ToLower() == "E_".ToLower())
                {
                    var newGrp = engNum + "_" + grpACL.Group.Name;

                    var grpAlreadyExists = _nRTUtility.GetNRTGroup(newGrp);

                    if (grpAlreadyExists == null)
                    {
                        var newCreatedGrp = _nRTUtility.CreateNRTGroup(newGrp);

                        var templateGrp = _nRTUtility.GetNRTGroup(grpACL.Group.Name);

                        if (newCreatedGrp != null)
                        {
                            newCreatedGrp.FullName = templateGrp.FullName;
                            newCreatedGrp.DomainName = templateGrp.DomainName;
                            newCreatedGrp.Enabled = true;
                            newCreatedGrp.NOS = templateGrp.NOS;
                            newCreatedGrp.External = false;
                            newCreatedGrp.Update();

                            foreach (IMANADMIN.NRTUser groupUser in templateGrp.Users)
                            {
                                newCreatedGrp.AddUser(groupUser);
                            }
                            newCreatedGrp.Update();
                        }
                    }

                    //ReGroups.Add(tempACL.Group.Name, ReGroupClientID.Trim() + "_" + tempACL.Group.Name);
                }
            }//Group ACLs for loop
        }
示例#20
0
        //--V469-583-E

        public static List <WsModel> GetWs(string wsId = null, WsLoadType wsLoadType = WsLoadType.ALL, bool newSession = false, bool isAdmin = false)
        {
            IManWorkspaces imWss = null;

            List <WsModel> iLWsModel = new List <WsModel>();

            if (string.IsNullOrWhiteSpace(wsId))
            {
                IManDatabase imDb = null;

                //--V469-583-S
                //imDb = newSession ? ImSession.GetNewInstance.GetDb(ImDbType.Active) : ImSession.GetInstance.GetDb(ImDbType.Active);
                imDb = IManageSession.Db(ImDbType.Active);
                //--V469-583-E

                if (imDb == null)
                {
                    return(null);
                }

                imWss = imDb.Workspaces;

                foreach (IManWorkspace imWs in imWss)
                {
                    IManDocumentClass imDC = imWs.SubClass;

                    if (imDC != null)
                    {
                        if (imDC.Name == "EAUDIT ENGAGEMENT" || imDC.Name == "AUDIT")
                        {
                            iLWsModel.Add(new WsModel
                            {
                                IsLoaded    = false,
                                Description = imWs.Description,
                                Name        = imWs.Name,
                                ObjectID    = imWs.ObjectID,
                                Owner       = WsUtility.GetWsUser(imWs.Owner),
                                SubType     = imWs.SubType,
                                WorkspaceID = imWs.WorkspaceID,

                                WsProfile = null,
                                WsFldrs   = null,
                                WsGroups  = null
                            });
                        }
                    }
                }
            }
            else if (wsLoadType == WsLoadType.None)
            {
                IManWorkspace imWs = null;

                iLWsModel.Add(GetWs(wsId, out imWs, WsLoadType.None, newSession, isAdmin: isAdmin));
            }
            else
            {
                IManWorkspace imWs = null;

                iLWsModel.Add(GetWs(wsId, out imWs, WsLoadType.ALL, newSession, isAdmin: isAdmin));
            }

            return(iLWsModel);
        }
示例#21
0
        public static int?Upload(IMInstance iMInstance, string engNum, string fileNameWithLocalPath, string iMFolderPath)
        {
            if (!File.Exists(fileNameWithLocalPath))
            {
                return(null);
            }

            var projectIdForEngNum = GetWsId(iMInstance, new List <string> {
                engNum
            });

            if (projectIdForEngNum.Count == 0)
            {
                return(null);
            }

            var iMSession = new IMSession(iMInstance);

            var wsId = IM.Wrapper.Utility.IMUtility.GetWsObjectID(iMInstance, iMSession, IMWSObjectType.Workspace, (double)projectIdForEngNum[0].EngId);

            IManWorkspace imWs = iMInstance.UseAdmin.GetValueOrDefault(false) ?
                                 (IManWorkspace)iMSession.AdminSession().DMS.GetObjectByID(wsId) :
                                 (IManWorkspace)iMSession.UserSession().DMS.GetObjectByID(wsId);

            if (iMFolderPath.StartsWith("/") || iMFolderPath.StartsWith("\\"))
            {
                iMFolderPath = iMFolderPath.Substring(1);
            }

            IManDocumentFolder imFldr = GetIMDocFolder(imWs, iMFolderPath);

            if (imFldr == null)
            {
                return(null);
            }

            IManDocument imDoc = imFldr.Database.CreateDocument();

            imDoc.SetAttributeByID(imProfileAttributeID.imProfileDescription, Path.GetFileName(fileNameWithLocalPath));

            imDoc.SetAttributeByID(imProfileAttributeID.imProfileType, GetIMDocType(imWs, Convert.ToString(imDoc.GetAttributeValueByID(imProfileAttributeID.imProfileDescription))));

            //imDoc.SetAttributeByID(imProfileAttributeID.imProfileAuthor, imWs.Owner.Name);
            //imDoc.SetAttributeByID(imProfileAttributeID.imProfileOperator, imWs.Owner.Name);

            imDoc.SetAttributeByID(imProfileAttributeID.imProfileAuthor, iMInstance.UserId);
            imDoc.SetAttributeByID(imProfileAttributeID.imProfileOperator, iMInstance.UserId);
            //imDoc.SetAttributeByID(imProfileAttributeID.imProfileLastUser, iMInstance.UserId);

            imDoc.SetAttributeByID(imProfileAttributeID.imProfileClass, IMConst.CONST_IMPROFILECLASS);
            imDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom7, IMConst.CONST_IMPROFILECUSTOM7);
            imDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom1,
                                   imWs.Profile.GetAttributeValueByID(imProfileAttributeID.imProfileCustom1).ToString());
            imDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom2,
                                   imWs.Profile.GetAttributeValueByID(imProfileAttributeID.imProfileCustom2).ToString());
            var engFunction = imWs.Profile.GetAttributeValueByID(imProfileAttributeID.imProfileCustom3).ToString();

            if (!string.IsNullOrWhiteSpace(engFunction))
            {
                imDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom3, engFunction);
            }
            else
            {
                imDoc.SetAttributeByID(imProfileAttributeID.imProfileCustom3, IMConst.CONST_IMPROFILECUSTOM3);
            }

            foreach (IManAdditionalProperty imAddProp in imFldr.AdditionalProperties)
            {
                if (imAddProp == null)
                {
                    continue;
                }

                int attID = Convert.ToInt32(imAddProp.Name.Substring(imAddProp.Name.LastIndexOf('_') + 1));
                imProfileAttributeID imProfAttr = (imProfileAttributeID)attID;

                if (imProfAttr != imProfileAttributeID.imProfileAuthor && imProfAttr != imProfileAttributeID.imProfileAuthorDescription &&
                    imProfAttr != imProfileAttributeID.imProfileOperator && imProfAttr != imProfileAttributeID.imProfileOperatorDescription &&
                    imProfAttr != imProfileAttributeID.imProfileLastUser && imProfAttr != imProfileAttributeID.imProfileLastUserDescription)
                {
                }
                else
                {
                    continue;
                }

                if (imAddProp.Value != IMConst.CONST_WORKSPACE_VALUE)
                {
                    //Date
                    if (imProfAttr == imProfileAttributeID.imProfileCustom21 ||
                        imProfAttr == imProfileAttributeID.imProfileCustom22 ||
                        imProfAttr == imProfileAttributeID.imProfileCustom23 ||
                        imProfAttr == imProfileAttributeID.imProfileCustom24)
                    {
                        DateTime parsedTime;
                        if (DateTime.TryParse(imAddProp.Value, out parsedTime))
                        {
                            imDoc.SetAttributeByID(imProfAttr, parsedTime);
                        }
                        else
                        {
                            imDoc.SetAttributeByID(imProfAttr, null);
                        }
                    }
                    //Boolean
                    else if (imProfAttr == imProfileAttributeID.imProfileCustom25 ||
                             imProfAttr == imProfileAttributeID.imProfileCustom26 ||
                             imProfAttr == imProfileAttributeID.imProfileCustom27 ||
                             imProfAttr == imProfileAttributeID.imProfileCustom28)
                    {
                        if (imAddProp.Value != null && imAddProp.Value.ToLower() == "true")
                        {
                            imDoc.SetAttributeByID(imProfAttr, true);
                        }
                        else
                        {
                            imDoc.SetAttributeByID(imProfAttr, false);
                        }
                    }
                    else
                    {
                        imDoc.SetAttributeByID(imProfAttr, imAddProp.Value);
                    }
                }
                else
                {
                    imDoc.SetAttributeByID(imProfAttr, imFldr.Workspace.Profile.GetAttributeValueByID(imProfAttr));
                }
            }

            IManCheckinResult checkInResult = imDoc.CheckInWithResults(fileNameWithLocalPath, imCheckinDisposition.imCheckinNewDocument, imCheckinOptions.imDontKeepCheckedOut);

            if (checkInResult.Succeeded)
            {
                AddSecurityToDoc(imDoc, imFldr);

                IManDocuments imDocs = (IManDocuments)imFldr.Contents;
                if (null != imDocs)
                {
                    imDocs.AddDocumentReference(checkInResult.Result);
                }

                if (iMInstance.UseAdmin.GetValueOrDefault(false))
                {
                    using (var db = new IMDbContext(iMInstance))
                    {
                        var original = db.DOCMASTER.Find(imDoc.Number, 1);
                        //original.OPERATOR = iMInstance.UserId;
                        //original.AUTHOR = iMInstance.UserId;
                        original.LASTUSER = iMInstance.UserId;
                        db.SaveChanges();
                    }
                }

                return(imDoc.Number);
            }
            else
            {
                return(null);
            }
        }