示例#1
4
        public Member(Grace.Models.Member member)
        {
            MemberModel = member;

            if (member.MemberID != 0)
            {
                if (member.MemberRelations.Count > 0)
                {
                    HeadOfHousehold = "Self";
                    HeadMemberID = member.MemberID;
                    MemberRelations = member.MemberRelations.ToList();
                }
                else
                {
                    if (member.MemberRelations1.Count > 0)
                    {
                        HeadOfHousehold = member.MemberRelations1[0].Member.FullName;
                        HeadMemberID = member.MemberRelations1[0].HeadMemberID;
                        MemberRelations = member.MemberRelations1[0].Member.MemberRelations.ToList();
                    }
                    else
                    {
                        HeadOfHousehold = "Self";
                        HeadMemberID = member.MemberID;
                        MemberRelations = member.MemberRelations1.ToList();
                    }
                }
            }
        }
示例#2
0
        public override bool StartSpecialSkill(Cooldown sk)
        {
            if (sk.Skill.IconName == EnergyStars.Cooldown.Skill.IconName)
            {
                EnergyStars.StartCooldown(sk.Duration);
                return(true);
            }

            if (sk.Skill.IconName == Grace.Cooldown.Skill.IconName)
            {
                Grace.StartCooldown(sk.Duration);
                return(true);
            }

            if (sk.Skill.IconName == EdictOfJudgment.Cooldown.Skill.IconName)
            {
                EdictOfJudgment.StartCooldown(sk.Duration);
                return(true);
            }

            if (sk.Skill.IconName == DivineCharge.Cooldown.Skill.IconName)
            {
                DivineCharge.StartCooldown(sk.Duration);
                return(true);
            }

            if (sk.Skill.IconName != TripleNemesis.Cooldown.Skill.IconName)
            {
                return(false);
            }
            TripleNemesis.StartCooldown(sk.Duration);
            return(true);
        }
示例#3
0
 public override void Dispose()
 {
     Grace.Dispose();
     EdictOfJudgment.Dispose();
     DivineCharge.Dispose();
     TripleNemesis.Dispose();
 }
        private static void CheckGrace(S_ABNORMALITY_END p)
        {
            if (p.AbnormalityId != GraceId)
            {
                return;
            }
            if (!IsViewModelAvailable <PriestLayoutVM>(out var vm))
            {
                return;
            }

            vm !.Grace.StopEffect();
        }
        private static void CheckGrace(S_ABNORMALITY_REFRESH p)
        {
            if (p.AbnormalityId != GraceId)
            {
                return;
            }
            if (!IsViewModelAvailable <PriestLayoutVM>(out var vm))
            {
                return;
            }

            vm !.Grace.RefreshEffect(p.Duration);
        }
 public ActionResult Create(Grace.ViewModels.SSClassTeacher ssClassTeacher)
 {
     if (TryValidateModel(ssClassTeacher.SSClassTeacherModel))
         try
         {
             _repository.Add(ssClassTeacher.SSClassTeacherModel);
             return RedirectToAction(Config.ActionVariables.Edit, Config.ControllerVariables.SSClass, new { id = ssClassTeacher.SSClassTeacherModel.SSClassID });
         }
         catch
         {
             return View(ssClassTeacher);
         }
     else
         return View(ssClassTeacher);
 }
 public ActionResult Create(Grace.ViewModels.Member member)
 {
     if (TryValidateModel(member.MemberModel))
         try
         {
             _repository.Add(member.MemberModel);
             return RedirectToAction(Config.ActionVariables.Index);
         }
         catch
         {
             return View(member);
         }
     else
         return View(member);
 }
 public ActionResult Create(Grace.Models.Committee committee)
 {
     if (ModelState.IsValid)
         try
         {
             _repository.Add(committee);
             return RedirectToAction(Config.ActionVariables.Index);
         }
         catch
         {
             return View(committee);
         }
     else
         return View(committee);
 }
 public ActionResult Create(Grace.ViewModels.CommitteeMember committeeMember)
 {
     if (TryValidateModel(committeeMember.CommitteeMemberModel))
         try
         {
             _repository.Add(committeeMember.CommitteeMemberModel);
             return RedirectToAction(Config.ActionVariables.Edit, Config.ControllerVariables.Committee, new { id = committeeMember.CommitteeMemberModel.CommitteeID });
         }
         catch
         {
             return View(committeeMember);
         }
     else
         return View(committeeMember);
 }
 public ActionResult Create(Grace.ViewModels.MemberRelation memberRelation)
 {
     if (TryValidateModel(memberRelation.MemberRelationModel))
         try
         {
             _repository.Add(memberRelation.MemberRelationModel);
             return RedirectToAction(Config.ActionVariables.Edit, Config.ControllerVariables.Member, new {id=memberRelation.MemberRelationModel.HeadMemberID});
         }
         catch
         {
             return View(memberRelation);
         }
     else
         return View(memberRelation);
 }
 partial void DeleteSSClassTeacher(Grace.Models.SSClassTeacher instance);
 partial void InsertSSClassMember(Grace.Models.SSClassMember instance);
 partial void UpdateSSClass(Grace.Models.SSClass instance);
 partial void DeleteSSAttendance(Grace.Models.SSAttendance instance);
 partial void InsertSSAttendance(Grace.Models.SSAttendance instance);
 partial void UpdateService(Grace.Models.Service instance);
 partial void DeletePersonnelMember(Grace.Models.PersonnelMember instance);
 partial void DeletePersonnel(Grace.Models.Personnel instance);
 partial void InsertPersonnel(Grace.Models.Personnel instance);
 partial void UpdatePersonnel(Grace.Models.Personnel instance);
示例#21
0
            /// <summary>
            /// Process a detected deletion.
            /// </summary>
            /// <param name="remoteFolder">Remote folder.</param>
            /// <param name="localFolder">Local folder.</param>
            /// <param name="pathname">Pathname.</param>
            /// <returns>Whether the delete has now been synchronized, so that no further action is needed</returns>
            private bool WatcherSyncDelete(string remoteFolder, string localFolder, string pathname, Grace grace)
            {
                SleepWhileSuspended();

                // In many programs (like Microsoft Word), deletion is often just a save:
                // 1. Save data to temporary file ~wrdxxxx.tmp
                // 2. Delete Example.doc
                // 3. Rename ~wrdxxxx.tmp to Example.doc
                // See https://support.microsoft.com/en-us/kb/211632
                // So, upon deletion, wait a bit for any save operation to hopefully finalize, then sync.
                // This is not 100% foolproof, as saving can last for more than the grace time, but probably
                // the best we can do without mind-reading third-party programs.
                grace.WaitGraceTime();
                try
                {
                    if (Utils.IsMetadataFile(pathname))
                    {
                        // Nothing to do
                        return(true);
                    }

                    SyncItem item = database.GetSyncItemFromLocalPath(pathname);
                    if (item == null)
                    {
                        // The item must be in the database
                        return(false);
                    }

                    ICmisObject cmisObject = session.GetObjectByPath(item.RemotePath);
                    if (cmisObject == null)
                    {
                        // the object does not exist on the server so nothing to do
                        return(true);
                    }

                    cmisObject.Delete(true);

                    // Folder or File
                    database.RemoveFolder(item);
                    database.RemoveFile(item);

                    // Remove metadata if exists
                    if (File.Exists(pathname + ".metadata"))
                    {
                        File.Delete(pathname + ".metadata");
                        database.RemoveMetadataFile(item);
                    }

                    return(true);
                }
                catch (Exception e)
                {
                    ProcessRecoverableException("Could Not process Watch Sync Delete : ", e);
                    return(false);
                }
            }
 partial void InsertPersonnelMember(Grace.Models.PersonnelMember instance);
示例#23
0
            /// <summary>
            /// An event was received from the filesystem watcher, analyze the change and apply it.
            /// <returns>Whether the move has now been synchronized, so that no further action is needed</returns>
            /// </summary>
            private bool WatchSyncMove(string remoteFolder, string localFolder, string oldPathname, string newPathname, Grace grace)
            {
                bool success = true;

                SleepWhileSuspended();

                try
                {
                    // Old item.
                    string   oldDirectory = Path.GetDirectoryName(oldPathname);
                    string   oldFilename  = Path.GetFileName(oldPathname);
                    string   oldLocalName = oldPathname.Substring(localFolder.Length + 1);
                    SyncItem oldItem      = database.GetSyncItemFromLocalPath(oldPathname);
                    if (oldItem == null)
                    {
                        // The change is about a file which was not in database yet, we can't move it. Further action is needed.
                        return(false);
                    }
                    string oldRemoteName           = oldItem.RemotePath;
                    string oldRemoteBaseName       = CmisUtils.GetUpperFolderOfCmisPath(oldRemoteName);
                    bool   oldPathnameWorthSyncing = Utils.WorthSyncing(oldDirectory, oldFilename, repoInfo);

                    // New item.
                    bool     isFolder                = Utils.IsFolder(newPathname);
                    string   newDirectory            = Path.GetDirectoryName(newPathname); // TODO do this only if isFolder is true, modify rest of the logic accordingly.
                    string   newFilename             = Path.GetFileName(newPathname);
                    string   newLocalName            = newPathname.Substring(localFolder.Length + 1);
                    SyncItem newItem                 = SyncItemFactory.CreateFromLocalPath(newPathname, isFolder, repoInfo, database);
                    string   newRemoteName           = newItem.RemotePath;
                    string   newRemoteBaseName       = CmisUtils.GetUpperFolderOfCmisPath(newRemoteName);
                    bool     newPathnameWorthSyncing = Utils.WorthSyncing(newDirectory, newFilename, repoInfo);

                    // Operations.
                    bool rename = oldDirectory.Equals(newDirectory) && !oldFilename.Equals(newFilename);
                    bool move   = !oldDirectory.Equals(newDirectory) && oldFilename.Equals(newFilename);
                    if ((rename && move) || (!rename && !move))
                    {
                        Logger.ErrorFormat("Not a valid rename/move: {0} -> {1}", oldPathname, newPathname);
                        return(true); // It is not our problem that watcher data is not valid.
                    }
                    if (oldPathnameWorthSyncing && newPathnameWorthSyncing)
                    {
                        if (database.ContainsLocalFile(oldPathname))
                        {
                            if (database.ContainsLocalFile(newPathname))
                            {
                                //database already contains path so revert back to delete/update
                                success &= WatcherSyncDelete(remoteFolder, localFolder, oldPathname, grace);
                                success &= WatcherSyncUpdate(remoteFolder, localFolder, newPathname);
                            }
                            else
                            {
                                if (rename)
                                {
                                    //rename file...
                                    IDocument remoteDocument = (IDocument)session.GetObjectByPath(oldRemoteName);
                                    success &= RenameFile(oldDirectory, newFilename, remoteDocument);
                                }
                                else //move
                                {
                                    //move file...
                                    IDocument remoteDocument  = (IDocument)session.GetObjectByPath(oldRemoteName);
                                    IFolder   oldRemoteFolder = (IFolder)session.GetObjectByPath(oldRemoteBaseName);
                                    IFolder   newRemoteFolder = (IFolder)session.GetObjectByPath(newRemoteBaseName);
                                    success &= MoveFile(oldDirectory, newDirectory, oldRemoteFolder, newRemoteFolder, remoteDocument);
                                }
                            }
                        }
                        else if (database.ContainsFolder(oldPathname))
                        {
                            if (database.ContainsFolder(newPathname))
                            {
                                //database already contains path so revert back to delete/update
                                success &= WatcherSyncDelete(remoteFolder, localFolder, oldPathname, grace);
                                success &= WatcherSyncUpdate(remoteFolder, localFolder, newPathname);
                            }
                            else
                            {
                                if (rename)
                                {
                                    //rename folder...
                                    IFolder remoteFolderObject = (IFolder)session.GetObjectByPath(oldRemoteName);
                                    success &= RenameFolder(oldDirectory, newFilename, remoteFolderObject);
                                }
                                else //move
                                {
                                    //move folder...
                                    IFolder remoteFolderObject = (IFolder)session.GetObjectByPath(oldRemoteName);
                                    IFolder oldRemoteFolder    = (IFolder)session.GetObjectByPath(oldRemoteBaseName);
                                    IFolder newRemoteFolder    = (IFolder)session.GetObjectByPath(newRemoteBaseName);
                                    success &= MoveFolder(oldDirectory, newDirectory, oldRemoteFolder, newRemoteFolder, remoteFolderObject);
                                }
                            }
                        }
                        else
                        {
                            //File/Folder has not been synced before so simply update
                            success &= WatcherSyncUpdate(remoteFolder, localFolder, newPathname);
                        }
                    }
                    else if (oldPathnameWorthSyncing && !newPathnameWorthSyncing)
                    {
                        //New path not worth syncing
                        success &= WatcherSyncDelete(remoteFolder, localFolder, oldPathname, grace);
                    }
                    else if (!oldPathnameWorthSyncing && newPathnameWorthSyncing)
                    {
                        //Old path not worth syncing
                        success &= WatcherSyncUpdate(remoteFolder, localFolder, newPathname);
                    }
                    else
                    {
                        //Neither old or new path worth syncing
                    }
                }
                catch (FileNotFoundException e)
                {
                    success = false;
                    Logger.Warn("Could process watcher sync move, file or folder not found: " + oldPathname + " -> " + newPathname, e);
                }
                catch (Exception e)
                {
                    success = false;
                    ProcessRecoverableException("Could not process watcher sync move: " + oldPathname + " -> " + newPathname, e);
                }
                return(success);
            }
 partial void InsertService(Grace.Models.Service instance);
示例#25
0
            /// <summary>
            /// Process a detected deletion.
            /// </summary>
            /// <param name="remoteFolder">Remote folder.</param>
            /// <param name="localFolder">Local folder.</param>
            /// <param name="pathname">Pathname.</param>
            /// <returns>Whether the delete has now been synchronized, so that no further action is needed</returns>
            private bool WatcherSyncDelete(string remoteFolder, string localFolder, string pathname, Grace grace)
            {
                SleepWhileSuspended();

                // In many programs (like Microsoft Word), deletion is often just a save:
                // 1. Save data to temporary file ~wrdxxxx.tmp
                // 2. Delete Example.doc
                // 3. Rename ~wrdxxxx.tmp to Example.doc
                // See https://support.microsoft.com/en-us/kb/211632
                // So, upon deletion, wait a bit for any save operation to hopefully finalize, then sync.
                // This is not 100% foolproof, as saving can last for more than the grace time, but probably
                // the best we can do without mind-reading third-party programs.
                grace.WaitGraceTime();

                return(false); // Perform a sync.
            }
 partial void DeleteService(Grace.Models.Service instance);
 partial void InsertPastor(Grace.Models.Pastor instance);
 partial void UpdateSSAttendance(Grace.Models.SSAttendance instance);
 partial void UpdatePastor(Grace.Models.Pastor instance);
 partial void InsertSSClass(Grace.Models.SSClass instance);
 partial void DeletePastor(Grace.Models.Pastor instance);
 partial void DeleteSSClass(Grace.Models.SSClass instance);
 partial void InsertPastorType(Grace.Models.PastorType instance);
 partial void DeleteSSClassMember(Grace.Models.SSClassMember instance);
 partial void UpdatePastorType(Grace.Models.PastorType instance);
 partial void InsertSSClassTeacherType(Grace.Models.SSClassTeacherType instance);
 partial void DeletePastorType(Grace.Models.PastorType instance);