Exemple #1
0
        public AccountModel[] Get([FromUri] string option, int id)
        {
            switch (option)
            {
            case "current":
                //id is ClientOrgID
                return(ApiUtility.GetCurrentAccounts(new ClientModel()
                {
                    ClientOrgID = id
                }));

            case "available":
                //id is ClientOrgID
                return(ApiUtility.GetAvailableAccounts(new ClientModel()
                {
                    ClientOrgID = id
                }));

            case "all":
                //id is OrgID
                return(ApiUtility.GetAllAccounts(new ClientModel()
                {
                    ClientOrgID = id
                }));
            }

            return(new AccountModel[] { });
        }
        public bool Delete([FromUri] string option, [FromBody] ClientModel model, int id = 0)
        {
            bool result = false;

            switch (option)
            {
            case "current":
                ClientOrg co = DataSession.Single <ClientOrg>(id);
                ClientOrg mo = DataSession.Single <ClientOrg>(model.ClientOrgID);
                var       cm = DataSession.Query <ClientManager>().FirstOrDefault(x => x.ClientOrg == co && x.ManagerOrg == mo && x.Active);
                if (cm != null)
                {
                    Provider.Data.ActiveLog.Disable(cm);

                    //remove account access if no other manager manages the acct
                    ClientModel    m = ApiUtility.CreateClientModel(co.CreateModel <IClient>());
                    AccountModel[] currentAccounts = ApiUtility.GetCurrentAccounts(m);
                    ClientModel[]  currentManagers = ApiUtility.GetCurrentManagers(m);

                    foreach (AccountModel acct in currentAccounts)
                    {
                        bool hasManagerForAccount = false;
                        foreach (ClientModel mgr in ApiUtility.GetCurrentManagers(acct))
                        {
                            if (currentManagers.Select(x => x.ClientOrgID).Contains(mgr.ClientOrgID))
                            {
                                hasManagerForAccount = true;
                                break;
                            }
                        }

                        if (!hasManagerForAccount)
                        {
                            //the client is assigned to an acct but does not have a manager who manages the acct
                            ClientAccount ca = DataSession.Query <ClientAccount>().FirstOrDefault(x => x.ClientOrg.ClientOrgID == m.ClientOrgID && x.Account.AccountID == acct.AccountID);

                            if (!ca.Manager)     //do not deactivate if this client is also the acct manager!
                            {
                                Provider.Data.ActiveLog.Disable(ca);
                            }
                        }
                    }

                    result = true;
                }
                break;
            }

            return(result);
        }