private Contract.TaggedObject MapTaggedObjectEntityToTaggedObjectContract(Entities.TaggedObject to)
 {
     return(new Contract.TaggedObject()
     {
         TaggedObjectId = to.TaggedObjectId,
         TagId = to.TagId,
         IsActive = to.IsActive,
         ObjectId = IsObjectIdInt(to.ApplicationId) ? to.ObjectId + "" : to.ObjectTextId
     });
 }
        private void SaveTaggedObjects(int applicationId, Contract.TagRequest req, bool tag)
        {
            toList = new List <TaggedObject>();
            Entities.TaggedObject tagObj;
            foreach (Entities.Tag t in tagList) // In case of multiple tags
            {
                if (string.IsNullOrEmpty(t.ErrorCode))
                {
                    foreach (Contract.TaggedObject to in req.TaggedObjects)
                    {
                        if (!string.IsNullOrEmpty(to.ObjectId))
                        {
                            if (t.IsNew)
                            {
                                tagObj = new Entities.TaggedObject()
                                {
                                    TagId           = t.TagId,
                                    ObjectId        = IsObjectIdInt(applicationId) ? Int32.Parse(to.ObjectId) : 0,
                                    ObjectTextId    = !IsObjectIdInt(applicationId) ? to.ObjectId : null,
                                    CreateDatetime  = DateTime.Now,
                                    UpdatedDateTime = DateTime.Now,
                                    IsActive        = tag,
                                    ApplicationId   = applicationId
                                };
                                repository.Save(tagObj);
                            }
                            else
                            {
                                tagObj = repository.GetTaggedObject(to.ObjectId.Trim(), t.TagId, IsObjectIdInt(applicationId));
                                if (tagObj == null || tagObj.TaggedObjectId == 0)
                                {
                                    tagObj = new Entities.TaggedObject()
                                    {
                                        TagId           = t.TagId,
                                        ObjectId        = IsObjectIdInt(applicationId) ? Int32.Parse(to.ObjectId) : 0,
                                        ObjectTextId    = !IsObjectIdInt(applicationId) ? to.ObjectId : null,
                                        CreateDatetime  = DateTime.Now,
                                        UpdatedDateTime = DateTime.Now,
                                        IsActive        = tag,
                                        ApplicationId   = applicationId
                                    };
                                    repository.Save(tagObj);
                                }
                                else if (tagObj.IsActive.HasValue && tagObj.IsActive.Value != tag)
                                {
                                    tagObj.IsActive        = tag;
                                    tagObj.UpdatedDateTime = DateTime.Now;
                                    repository.Save(tagObj);
                                }

                                if (to.TagId == 0 || to.TaggedObjectId == 0)
                                {
                                    to.TaggedObjectId = tagObj.TaggedObjectId;
                                    to.TagId          = t.TagId;
                                    to.IsActive       = tag;
                                }

                                if (req.GetTaggedObjectsInResponse)
                                {
                                    toList.Add(MapTaggedObjectEntityToTaggedObjectContract(tagObj));
                                }
                            }
                        }
                        else
                        {
                            to.ErrorCode     = "InvalidObjectId";
                            tagRes.ErrorCode = SetErrorCode(tagRes.ErrorCode, "InvalidTagId");
                            if (req.GetTaggedObjectsInResponse)
                            {
                                toList.Add(to);
                            }
                        }
                    }
                }
            }
        }