public int?Resolve(ScarMarkTattoo scarMarkTattoo)
        {
            var BodyMarkId = 0;

            if (scarMarkTattoo.MasterIndexID != null && scarMarkTattoo.SMT.Code != null && scarMarkTattoo.Location.Description != null)
            {
                BodyMarkId = _vsiData.Master_Name_BodyMark.Where(x => x.Master_Name_Link == scarMarkTattoo.MasterIndexID && x.SMT == scarMarkTattoo.SMT.Code & x.Location == scarMarkTattoo.Location.Description).Select(x => x.BodyMarks_Link).FirstOrDefault();
            }
            else if (scarMarkTattoo.MasterIndexID != null && scarMarkTattoo.SMT.Code != null)
            {
                BodyMarkId = _vsiData.Master_Name_BodyMark.Where(x => x.Master_Name_Link == scarMarkTattoo.MasterIndexID && x.SMT == scarMarkTattoo.SMT.Code).Select(x => x.BodyMarks_Link).FirstOrDefault();
            }
            return(BodyMarkId);
        }
Пример #2
0
        /// <summary>
        /// Process a scarMarkTattoo
        /// </summary>
        public long?Process(ScarMarkTattoo scarMarkTattoo, IPerson person)
        {
            var link = 0;

            // Set the MasterIndexLink
            if (scarMarkTattoo.MasterIndexID == null || scarMarkTattoo.MasterIndexID <= 0)
            {
                scarMarkTattoo.SetMasterIndexLink(person.MasterPersonId);
            }

            if (scarMarkTattoo.BodyMarkId == null || scarMarkTattoo.BodyMarkId <= 0)
            {
                scarMarkTattoo.BodyMarkId = _scarMarkTattooResolver.Resolve(scarMarkTattoo);
            }

            link = (scarMarkTattoo.BodyMarkId == null) ? 0 : Convert.ToInt32(scarMarkTattoo.BodyMarkId);

            //only update records that have changed or new
            if (BodyMarkChangedOrNew(scarMarkTattoo))
            {
                try
                {
                    // invoke classic rms procs for master scarMarkTattoo processing.
                    link = new ProcessScarMarkTattoo(scarMarkTattoo).Execute(_vsiData.Database);
                }
                catch (Exception e)
                {
                    #region Handle Failure
                    // TODO: Evaluate how the system should behave when unable to communicate with the classic system.
                    // TODO: Should we set the link to null to indicate the scarMarkTattoo has yet to be processed?
                    // TODO: We may want to only set it to null if it is not already a proper value, so we don't
                    // TODO: lose a valid link just because we cannot communicate with classic.

                    var log = LogProvider.Get <MasterScarMarkTattooProcessor>();
                    log.Error("Failed to process scarMarkTattoo: " + Environment.NewLine + e);
                    // TODO: What is a "valid" link? >0?  Do we need to do Anything?
                    if (!scarMarkTattoo.BodyMarkId.HasValue || scarMarkTattoo.BodyMarkId < 1)
                    {
                        link = 0;
                    }
                    #endregion
                }
            }

            // Set the BodyMarkLink
            scarMarkTattoo.SetBodyMarkLink(link);

            // Return the link for quick reference
            return(scarMarkTattoo.BodyMarkId);
        }
Пример #3
0
        private bool BodyMarkChangedOrNew(ScarMarkTattoo scarMarkTattoo)
        {
            using (var vsiData = new VSI_DATAContext())
            {
                BodyMarks bodyMarks = new Master_Name_BodyMark_Repository(vsiData).BodyMarks.FirstOrDefault(n => n.BodyMarks_Link == scarMarkTattoo.BodyMarkId);
                if (bodyMarks == null)
                {
                    return(true);
                }
                else
                {
                    if (IsNotEqual(scarMarkTattoo.SMT.Code, bodyMarks.SMT))
                    {
                        return(true);
                    }
                    if (IsNotEqual(scarMarkTattoo.TypeSMT.Description, bodyMarks.Type_SMT))
                    {
                        return(true);
                    }
                    if (scarMarkTattoo.Active.ToUpper() == "TRUE" && bodyMarks.Active != true)
                    {
                        return(true);
                    }
                    if (scarMarkTattoo.Active.ToUpper() == "FALSE" && bodyMarks.Active != false)
                    {
                        return(true);
                    }
                    if (IsNotEqual(scarMarkTattoo.Description, bodyMarks.Description))
                    {
                        return(true);
                    }
                    if (IsNotEqual(scarMarkTattoo.Location.Description, bodyMarks.Location))
                    {
                        return(true);
                    }
                    if (IsNotEqual(scarMarkTattoo.NCICSMT.Code, bodyMarks.NCIC_SMT))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Пример #4
0
 public new bool CheckEquals(ScarMarkTattoo other)
 {
     return(base.CheckEquals(other));
 }
Пример #5
0
 public ProcessScarMarkTattoo(ScarMarkTattoo scarMarkTattoo)
 {
     _scarMarkTattoo = scarMarkTattoo;
 }