Skip to content

Instantly share code, notes, and snippets.

@eestein
Last active August 11, 2017 02:34
Show Gist options
  • Select an option

  • Save eestein/d5ecd4f598869651cc3158fe401b5194 to your computer and use it in GitHub Desktop.

Select an option

Save eestein/d5ecd4f598869651cc3158fe401b5194 to your computer and use it in GitHub Desktop.

Revisions

  1. eestein revised this gist Aug 11, 2017. 1 changed file with 4 additions and 3 deletions.
    7 changes: 4 additions & 3 deletions t.cs
    Original file line number Diff line number Diff line change
    @@ -5,15 +5,16 @@ public ProviderManagerProfileViewModel Update(ProviderManagerProfileViewModel da
    providerManagerProfile.User.Email = data.Email;
    providerManagerProfile.User.Name = data.Name;

    var loggedUserStoresIds = LoggedUser.GetStores().Select(s => s.StoreId).ToArray();
    var profiles = providerManagerProfile.User.Profiles.OfType<ProviderManagerProfile>().ToArray();
    var mutualIds = data.StoresIds.Intersect(profiles.Select(pmp => pmp.StoreId).ToArray());

    foreach (var profile in profiles.Where(p => !mutualIds.Contains(p.StoreId)))
    foreach (var profile in profiles.Where(p => !mutualIds.Contains(p.StoreId) && loggedUserStoresIds.Contains(p.StoreId)))
    {
    Context.Delete(profile);
    profile.RemovedDate = DateTime.Now;
    }

    foreach (var storeId in data.StoresIds.Where(id => !mutualIds.Contains(id)))
    foreach (var storeId in data.StoresIds.Where(id => !mutualIds.Contains(id) && loggedUserStoresIds.Contains(id)))
    {
    providerManagerProfile.User.Profiles.Add(Context.Add(new ProviderManagerProfile
    {
  2. eestein created this gist Aug 11, 2017.
    27 changes: 27 additions & 0 deletions t.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    public ProviderManagerProfileViewModel Update(ProviderManagerProfileViewModel data)
    {
    var providerManagerProfile = Context.GetRepository<ProviderManagerProfile>().GetById(data.Id);

    providerManagerProfile.User.Email = data.Email;
    providerManagerProfile.User.Name = data.Name;

    var profiles = providerManagerProfile.User.Profiles.OfType<ProviderManagerProfile>().ToArray();
    var mutualIds = data.StoresIds.Intersect(profiles.Select(pmp => pmp.StoreId).ToArray());

    foreach (var profile in profiles.Where(p => !mutualIds.Contains(p.StoreId)))
    {
    Context.Delete(profile);
    }

    foreach (var storeId in data.StoresIds.Where(id => !mutualIds.Contains(id)))
    {
    providerManagerProfile.User.Profiles.Add(Context.Add(new ProviderManagerProfile
    {
    StoreId = storeId
    }));
    }

    Context.Save(false);

    return providerManagerProfile.Format();
    }