public SocialPartnerViewModel DestroySocialPartner(SocialPartnerViewModel givenSocialPartner)
        {
            this.Data.SocialPartners.Delete(givenSocialPartner.Id);
            this.Data.SaveChanges();

            return givenSocialPartner;
        }
        public JsonResult CreateGooglePlusSocialPartner([DataSourceRequest]  DataSourceRequest request, SocialPartnerViewModel socialPartnerModel)
        {
            if (socialPartnerModel == null || !ModelState.IsValid)
            {
                return Json(new[] { socialPartnerModel }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet);
            }

            socialPartnerModel.SocialSystem = SocialSystemType.GooglePlus;
            var createdSocialPartner = this.socialPartners.CreateSocialPartner(socialPartnerModel);

            var loggedUserId = User.Identity.GetUserId();
            Base.CreateActivity(ActivityType.Create, createdSocialPartner.Id.ToString(), ActivityTargetType.SocialPartner, loggedUserId);

            socialPartnerModel.Id = createdSocialPartner.Id;

            return Json(new[] { socialPartnerModel }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet);
        }
        public SocialPartnerViewModel CreateSocialPartner(SocialPartnerViewModel givenSocialPartner)
        {
            if (givenSocialPartner == null)
            {
                return null;
            }

            var newSocialPartner = new SocialPartner()
            {
                Name = givenSocialPartner.Name,
                Website = givenSocialPartner.Website,
                PhoneNumber = givenSocialPartner.PhoneNumber,
                Email = givenSocialPartner.Email,
                SocialSystem = givenSocialPartner.SocialSystem,
                IsVisible = givenSocialPartner.IsVisible
            };

            this.Data.SocialPartners.Add(newSocialPartner);
            this.Data.SaveChanges();

            givenSocialPartner.Id = newSocialPartner.Id;

            return givenSocialPartner;
        }
        public JsonResult UpdateTwitterSocialPartner([DataSourceRequest] DataSourceRequest request, SocialPartnerViewModel socialPartnerModel)
        {
            if (socialPartnerModel == null || !ModelState.IsValid)
            {
                return Json(new[] { socialPartnerModel }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet);
            }

            socialPartnerModel.SocialSystem = SocialSystemType.Twitter;
            var updatedSocialPartner = socialPartners.UpdateSocialPartner(socialPartnerModel);

            var loggedUserId = User.Identity.GetUserId();
            Base.CreateActivity(ActivityType.Edit, updatedSocialPartner.Id.ToString(), ActivityTargetType.SocialPartner, loggedUserId);

            return Json((new[] { socialPartnerModel }.ToDataSourceResult(request, ModelState)), JsonRequestBehavior.AllowGet);
        }
        public JsonResult DestroyTwitterSocialPartner([DataSourceRequest] DataSourceRequest request, SocialPartnerViewModel socialPartnerModel)
        {
            socialPartnerModel.SocialSystem = SocialSystemType.Twitter;
            var deletedSocialPartner = socialPartners.DestroySocialPartner(socialPartnerModel);

            var loggedUserId = User.Identity.GetUserId();
            Base.CreateActivity(ActivityType.Delete, deletedSocialPartner.Id.ToString(), ActivityTargetType.SocialPartner, loggedUserId);

            return Json(new[] { socialPartnerModel }, JsonRequestBehavior.AllowGet);
        }
        public SocialPartnerViewModel UpdateSocialPartner(SocialPartnerViewModel givenSocialPartner)
        {
            SocialPartner socialPartnerFromDb = this.Data.SocialPartners
                        .All()
              .FirstOrDefault(p =>
              p.Id == givenSocialPartner.Id
              && p.SocialSystem == givenSocialPartner.SocialSystem);

            if (givenSocialPartner == null || socialPartnerFromDb == null)
            {
                return givenSocialPartner;
            }

            socialPartnerFromDb.Name = givenSocialPartner.Name;
            socialPartnerFromDb.Website = givenSocialPartner.Website;
            socialPartnerFromDb.Email = givenSocialPartner.Email;
            socialPartnerFromDb.PhoneNumber = givenSocialPartner.PhoneNumber;
            socialPartnerFromDb.IsVisible = givenSocialPartner.IsVisible;

            this.Data.SaveChanges();

            return givenSocialPartner;
        }