public long CreateContact(long fid, string augid)
        {
            CCItems objcontact = new CCItems();
            objcontact.FolderID = fid;
            objcontact.LastUpdated = DateTime.Now.ToUniversalTime();
            objcontact.Created = DateTime.Now.ToUniversalTime();
            objcontact.isDistGroup = false;
            objcontact.isRecurring = false;
            objcontact.AccountGUID = augid;
            var cont = this.SaveContact(objcontact);

            return cont.ItemID;
        }
        public ActionResult SelectedContactsFields(LayoutsViewModel objViewlayouts)
        {
            Account accountObj = (Account)Session["account"];
            User userObj = (User)Session["user"];
            CCFolder folderObj = (CCFolder)Session["folderDetail"];

            var objvalues = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(objViewlayouts.FieldValues);
            var objfield = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(objViewlayouts.FieldNames);

            var allfolderfields = CCFieldRepository.CCFolderFields.Where(aid => aid.FolderID == objViewlayouts.FolderID & aid.AccountGUID == accountObj.AccountGUID);
            var fieldvalues = CCFieldValueRepository.CCFieldValues.Where(cid => cid.ItemID == objViewlayouts.ContactID & cid.AccountGUID == accountObj.AccountGUID);
            var notes = "";
            int i = 0;
            foreach (var item in objvalues)
            {
                string itemValue = item;
                if (allfolderfields.Count() > 0 && fieldvalues.Count() > 0)
                {
                    string fieldname = "";
                    fieldname = objfield[i];
                    if (fieldname == "Start" || fieldname == "End")
                    {
                        string format = "yyyy-MM-dd HH:mm";
                        DateTime startEndTime = DateTimeOffset.Parse(item).UtcDateTime;
                        itemValue = startEndTime.ToString(format);
                    }
                    if(fieldname == "Notes")
                    {
                        notes = itemValue;
                    }
                    if (fieldname != "")
                    {
                        var fieldid = allfolderfields.FirstOrDefault(fname => fname.FieldName == fieldname).FieldID;
                        CCFieldValue objFieldValue = new CCFieldValue();
                        if (fieldvalues.FirstOrDefault(fid => fid.FieldID == fieldid) != null)
                        {
                            var valueid = fieldvalues.FirstOrDefault(fid => fid.FieldID == fieldid).ValueID;
                            objFieldValue.ValueID = valueid;
                        }
                        else
                        {
                            objFieldValue.LastUpdated = DateTime.UtcNow;
                            objFieldValue.ValueID = 0;
                            objFieldValue.FieldID = fieldid;
                            objFieldValue.ItemID = objViewlayouts.ContactID;
                        }
                        objFieldValue.Value = itemValue;
                        objFieldValue.AccountGUID = accountObj.AccountGUID;
                        CCFieldValueRepository.SaveFieldValues(objFieldValue);
                    }

                }

                i++;
            }
            long contactid = objViewlayouts.ContactID;
            if (contactid != 0)
            {
                AddDedupeViewModel dedupe = new AddDedupeViewModel();
                foreach (var field in allfolderfields.ToList())
                {
                    if (folderObj != null)
                    {
                        if (folderObj.Type == 1)
                        {
                            if (field.FieldCaption == "First Name") { dedupe.FirstName = fieldvalues.ToList().Find(fid => fid.FieldID == field.FieldID).Value; }
                            if (field.FieldCaption == "Middle Name") { dedupe.MiddleName = fieldvalues.ToList().Find(fid => fid.FieldID == field.FieldID).Value; }
                            if (field.FieldCaption == "Last Name") { dedupe.LastName = fieldvalues.ToList().Find(fid => fid.FieldID == field.FieldID).Value; }
                            if (field.FieldCaption == "Company") { dedupe.CompanyName = fieldvalues.ToList().Find(fid => fid.FieldID == field.FieldID).Value; }
                            if (field.FieldCaption == "Email Address") { dedupe.Email = fieldvalues.ToList().Find(fid => fid.FieldID == field.FieldID).Value; }
                        }
                        else if (folderObj.Type == 2)
                        {
                            if (field.FieldCaption == "Subject") { dedupe.Subject = fieldvalues.ToList().Find(fid => fid.FieldID == field.FieldID).Value; }
                            if (field.FieldCaption == "Start Time") { dedupe.StartDateTime = fieldvalues.ToList().Find(fid => fid.FieldID == field.FieldID).Value; }
                            if (field.FieldCaption == "End Time") { dedupe.EndDateTime = fieldvalues.ToList().Find(fid => fid.FieldID == field.FieldID).Value; }
                        }
                    }
                }

                CCItems contact = new CCItems();
                contact.ItemID = contactid;
                if (folderObj.Type == 1) { contact.DeDupeValue = dedupe.FirstName + "|" + dedupe.MiddleName + "|" + dedupe.LastName + "|" + dedupe.CompanyName + "|" + dedupe.Email; }
                else if (folderObj.Type == 2)
                {
                    contact.DeDupeValue = dedupe.Subject + "|" + dedupe.StartDateTime + "|" + dedupe.EndDateTime;
                    contact.Notes = notes;
                    contact.TextBody = notes;
                }
                bool res = CCItemRepository.UpdateContact(contact);
            }

            return RedirectToAction("ViewLayout", "Folder", new { id = objViewlayouts.ContactID, fid = objViewlayouts.FolderID, pid = objViewlayouts.PageID });
        }
        public ActionResult RevertChanges(long HistLogID, int type, string actionType)
        {
            if (actionType == "update")
            {
                CCHistoryLog HistLogObj = CCHistoryLogRepository.CCHistoryLogs.Where(hist => hist.ID == HistLogID).FirstOrDefault();
                CCFieldValue FieldValObj = CCFieldValueRepository.CCFieldValues.Where(field => field.FieldID == HistLogObj.FieldID && field.ItemID == HistLogObj.ItemID).FirstOrDefault();

                FieldValObj.Value = HistLogObj.OldValue;
                FieldValObj.LastUpdated = DateTime.Now;
                CCFieldValueRepository.RevertChangeToFieldValues(FieldValObj, HistLogObj);

                CCItems ItemObj = CCItemRepository.CCContacts.Where(item => item.ItemID == HistLogObj.ItemID).FirstOrDefault();

                if (type == 1)
                    return RedirectToAction("Items", "Folder", new { id = ItemObj.FolderID });
                else
                    return RedirectToAction("Items", "Folder", new { id = ItemObj.FolderID }); //have to cahnge for Item view.. Need 3 parameterd.. pid?
            }
            else if (actionType == "delete")
            {
                //Need to complete for DELETE
                CCHistoryLog HistLogObj = CCHistoryLogRepository.CCHistoryLogs.Where(hist => hist.ID == HistLogID).FirstOrDefault();
                CCItems ItemObj = CCItemRepository.CCContacts.Where(item => item.ItemID == HistLogObj.ItemID).FirstOrDefault();
                CCItems ItemTempObj = new CCItems();
                ItemTempObj.ItemID = ItemObj.ItemID;
                ItemTempObj.DeDupeValue = ItemObj.DeDupeValue;
                if (ItemObj.isDeleted == true)
                    ItemTempObj.isDeleted = false;
                CCItemRepository.UpdateContact(ItemTempObj);

                return RedirectToAction("Items", "Folder", new { id = ItemObj.FolderID });
            }
            else
            {
                CCHistoryLog HistLogObj = CCHistoryLogRepository.CCHistoryLogs.Where(hist => hist.ID == HistLogID).FirstOrDefault();
                CCItems ItemObj = CCItemRepository.CCContacts.Where(item => item.ItemID == HistLogObj.ItemID).FirstOrDefault();
                return RedirectToAction("Items", "Folder", new { id = ItemObj.FolderID });
            }
        }
        public string getTitleForItem(CCItems item)
        {
            string[] seperatedValues = seperateDeDupeValue(item.DeDupeValue);

            if (seperatedValues.Count() == 4)
            {
                if (seperatedValues[0] != "" && seperatedValues[2] != "")
                {
                    return seperatedValues[0] + " " + seperatedValues[2] + " - " + seperatedValues[3];
                }
                else
                {
                    return item.ItemID.ToString();
                }
            }
            else if (seperatedValues.Count() == 3)
            {
                if (seperatedValues[0] != "")
                {
                    return seperatedValues[0];
                }
                else
                {
                    return item.ItemID.ToString();
                }
            }
            return "";
        }
        public bool UpdateContact(CCItems contactObj)
        {
            CCItems dbEntry = context.CCContacts.Find(contactObj.ItemID);
            if (dbEntry != null)
            {
                dbEntry.LastUpdated = DateTime.Now.ToUniversalTime();
                dbEntry.DeDupeValue = contactObj.DeDupeValue;

                if (dbEntry.TextBody != contactObj.TextBody)
                    dbEntry.TextBody = contactObj.TextBody;

                if (dbEntry.Notes != contactObj.Notes)
                    dbEntry.Notes = contactObj.Notes;

                if (dbEntry.isDeleted != contactObj.isDeleted)
                {
                    CCHistoryLog HistoryLog = new CCHistoryLog();
                    HistoryLog.AccountGUID = dbEntry.AccountGUID;
                    HistoryLog.Date = DateTime.Now;
                    HistoryLog.FieldID = 0;
                    HistoryLog.ItemID = dbEntry.ItemID;
                    HistoryLog.NewValue = "";
                    HistoryLog.OldValue = "";
                    HistoryLog.Source = "Web";
                    HistoryLog.Action = "Delete-Revert";
                    HistoryLog.ConnectionID = 0;
                    context.CCHistoryLog.Add(HistoryLog);
                    context.SaveChanges();

                    dbEntry.isDeleted = contactObj.isDeleted;
                }
                context.SaveChanges();
                return true;
            }

            return false;
        }
        public CCItems SaveContact(CCItems contactObj)
        {
            if (contactObj.ItemID == 0)
            {
                context.CCContacts.Add(contactObj);
                context.SaveChanges();
            }
            else
            {
                CCItems dbEntry = context.CCContacts.Find(contactObj.ItemID);
                if (dbEntry != null)
                {
                    dbEntry.LastUpdated = DateTime.Now.ToUniversalTime();
                    context.SaveChanges();
                }

            }

            return contactObj;
        }
 private bool UpdateContact(AddDedupeViewModel dedupe, long contectID, int type, string notes)
 {
     CCItems contact = new CCItems();
     contact.ItemID = contectID;
     contact.Notes = notes;
     contact.TextBody = notes;
     if (type == 1) { contact.DeDupeValue = dedupe.FirstName + "|" + dedupe.MiddleName + "|" + dedupe.LastName + "|" + dedupe.CompanyName + "|" + dedupe.Email; }
     else { contact.DeDupeValue = dedupe.Subject + "|" + dedupe.StartDateTime + "|" + dedupe.EndDateTime; }
     bool res = CCItemRepository.UpdateContact(contact);
     return res;
 }