Exemplo n.º 1
0
        internal void SaveChanges()
        {
            Worker.EnqueueTask(new WorkerTask(args =>
                {
                    try
                    {
                        using (var proxy = new WorkChannel())
                        {
                            List<UserDTO> toUpdate = new List<UserDTO>();
                            List<UserDTO> toRemove = new List<UserDTO>();
                            foreach (var user in UsersCollection)
                            {
                                toUpdate.Add(user);
                            }

                            foreach (var user in RemovedUsers)
                            {
                                toRemove.Add(user);
                            }

                            return proxy.UpdateOrRemoveUser(new UpdateOrRemoveRequest<List<UserDTO>>
                            {
                                Data = toUpdate,
                                DataToRemove = toRemove,
                                Login = ClientConfig.CurrentUser.Email,
                                Password = ClientConfig.CurrentUser.Password
                            });
                        }
                    }
                    catch (Exception exc)
                    {
                        return exc;
                    }
                }, (s, e) =>
                    {
                        if (e.Result is Exception)
                        {
                            Utils.HandleException(e.Result as Exception);
                            return;
                        }
                        var result = e.Result as ListResponse<UserDTO>;
                        if (result == null)
                        {
                            Utils.showError(Utils.Messages.UNKNOWN_ERROR_FORMAT);
                            return;
                        }
                        UsersCollection.Clear();
                        RemovedUsers.Clear();
                        foreach (var item in result.Data)
                        {
                            UsersCollection.Add(item);
                        }
                        Modified = false;
                    }, null));
        }