Exemplo n.º 1
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (ToUser != 0UL)
            {
                hash ^= ToUser.GetHashCode();
            }
            hash ^= friendRequestsList_.GetHashCode();
            return(hash);
        }
Exemplo n.º 2
0
        public void SendEmail(CodeActivityContext context, Dictionary <Guid, string> pmDetails, IWorkflowContext wfContext, IOrganizationService _service)
        {
            //From: From User
            //To: List of PM

            ActivityParty fromParty = new ActivityParty()
            {
                PartyId = new EntityReference("systemuser", FromUser.Get(context).Id)
            };

            ActivityParty toParty = new ActivityParty()
            {
                PartyId = new EntityReference(ToUser.Get(context).LogicalName, ToUser.Get(context).Id)
            };

            List <ActivityParty> ccActivityPartyList = new List <ActivityParty>();

            foreach (var item in pmDetails)
            {
                ActivityParty ccParty = new ActivityParty
                {
                    PartyId = new EntityReference(ToUser.Get(context).LogicalName, item.Key)
                };
                ccActivityPartyList.Add(ccParty);
            }

            Email email = new Email
            {
                To                = new ActivityParty[] { toParty },
                From              = new ActivityParty[] { fromParty },
                Subject           = Subject.Get(context),
                Description       = "Dear User <br /> The timeframe to complete project task has elapsed.",
                DirectionCode     = true,
                Cc                = ccActivityPartyList,
                RegardingObjectId = new EntityReference("msdyn_project", wfContext.PrimaryEntityId),
            };

            Guid _emailId = _service.Create(email);

            SendEmailRequest sendEmailreq = new SendEmailRequest
            {
                EmailId       = _emailId,
                TrackingToken = "",
                IssueSend     = true
            };

            SendEmailResponse sendEmailresp = (SendEmailResponse)_service.Execute(sendEmailreq);
        }
Exemplo n.º 3
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (Category != 0)
            {
                hash ^= Category.GetHashCode();
            }
            if (FromUser.Length != 0)
            {
                hash ^= FromUser.GetHashCode();
            }
            if (ToUser.Length != 0)
            {
                hash ^= ToUser.GetHashCode();
            }
            hash ^= actionList_.GetHashCode();
            hash ^= messageList_.GetHashCode();
            return(hash);
        }
Exemplo n.º 4
0
        public string Command_transaction(string username, string message)
        {
            string r = "";
            string m = message.Replace("/transaction", "");

            string[] words = message.Trim().Split(' ');
            string   desc  = "";
            string   from_user;

            m = m.Replace("/t", "");
            m = m.Replace("@DeeBeeTeeBot", "");
            m = m.Replace("@DeeBeeTeeTestBot", "");
            m = m.Trim();
            logger.Debug($"Начала парсинга транзакции в строке '{m}'");
            int probel = m.IndexOf(' ');

            if (probel == -1)
            {
                r = "Команда добавления транзакции неправильная. Принимаются только команды вида @FromUser Amount @ToUser(s). Например '@Ivan 226 @Petr'. Не найдены пробелы";
                return(r);
            }
            string after_t = m.Substring(0, probel);

            logger.Debug($"Сразу после /t '{after_t}'");

            if (!after_t.Trim().StartsWith("@"))
            {
                logger.Debug("Видимо пользователь не указан, берем отправителя");
                from_user = username;
            }
            else
            {
                from_user = m.Substring(1, probel - 1);
                logger.Debug($"Пользователь from '{from_user}'");
                m      = m.Substring(probel + 1);
                m      = m.Trim();
                probel = m.IndexOf(' ');
                if (probel == -1)
                {
                    r = "Команда добавления транзакции неправильная. Принимаются только команды вида @FromUser Amount @ToUser(s). Например '@Ivan 226 @Petr'. Не найдена сумма";
                    return(r);
                }
            }


            string  s_amount = m.Substring(0, probel);
            decimal amount   = 0;
            bool    computed = false;

            try
            {
                amount   = Convert.ToDecimal(new DataTable().Compute(s_amount, null));
                computed = true;
            }
            catch (Exception e)
            {
                logger.Debug(e.ToString());
            }

            logger.Debug($"Сумма '{s_amount} ({(computed ? amount.ToString() : "не вычислено")})'");

            if (!computed)
            {
                r = "Команда добавления транзакции неправильная. Принимаются только команды вида @FromUser Amount @ToUser(s). Например '@Ivan 226 @Petr'. @FromUser можно опустить, тогда он будет соответствовать текущему пользователю. Amount может быть простым арифметическим выражением (без пробелов)";
                return(r);
            }

            m = m.Substring(probel + 2);
            m = m.Trim();
            List <string> ToUsers           = new List <string>();
            bool          FromUserInMulti   = false;
            bool          SimpleTransaction = true;
            int           AtPos             = m.IndexOf("@", 2, m.Length - 2, StringComparison.CurrentCulture);

            if (AtPos > 0)
            {
                string ToUser;
                SimpleTransaction = false;
                m = "@" + m + " ";
                logger.Debug("Обнаружена мультитранзакция, поиск пользователей в подстроке '" + m);
                //logger.Trace("Search in '" + m + "'");
                for (int p = 0; p < m.Length; p++)
                {
                    //logger.Trace("search " + p);
                    if (m[p] == '@')
                    {
                        AtPos = p;
                        //logger.Trace("at found  " + p);
                    }
                    ;

                    if ((m[p] == ' ') & (AtPos >= 0))
                    {
                        //logger.Trace("space found  " + p);
                        ToUser = m.Substring(AtPos + 1, p - 1 - AtPos);
                        logger.Trace("add user  '" + ToUser + "'");
                        ToUsers.Add(ToUser);
                        FromUserInMulti = FromUserInMulti || (ToUser.ToLower() == from_user.ToLower());
                        AtPos           = -1;

                        if (p < m.Length - 1)
                        {
                            if (m[p + 1] != '@')
                            {
                                desc = m.Substring(p + 1, m.Length - p - 1);
                                desc = desc.Trim();
                                logger.Trace("find description '" + desc + "'");
                                continue;
                            }
                        }
                        ;
                    }
                    ;
                }
                ;

                logger.Trace("Количество пользователей to в мультитранзакции " + ToUsers.Count + ", сам пользователь " + FromUserInMulti);
            }
            ;
            if (SimpleTransaction)
            {
                string to_user = m;
                desc = "";
                int SpacePos = m.IndexOf(" ", 2, m.Length - 2, StringComparison.CurrentCulture);
                if (SpacePos > 0)
                {
                    to_user = m.Substring(0, SpacePos);
                    desc    = m.Substring(SpacePos + 1, m.Length - SpacePos - 1);
                }
                logger.Debug($"Пользователь to '{to_user}'");
                logger.Debug($"Описание '{desc}'");
                if (m.Length == 0)
                {
                    r = "Команда добавления транзакции неправильная. Принимаются только команды вида @FromUser Amount @ToUser(s). Например '@Ivan 226 @Petr'. Не найден пользователь to";
                    return(r);
                }
                logger.Debug($"Поиск пользователя '{from_user}'");
                User su = SearchUser(from_user);
                if (su.uid == 0)
                {
                    r = "Пользователь @" + from_user + " не подключен к системе. Регистрация транзакции невозможна";
                    return(r);
                }
                logger.Debug($"Поиск пользователя '{to_user}'");
                su = SearchUser(to_user);
                if (su.uid == 0)
                {
                    r = "Пользователь @" + to_user + " не подключен к системе. Регистрация транзакции невозможна";
                    return(r);
                }
                logger.Debug($"Выполнение в SQL транзакции from:{from_user} amount:{amount} to:{to_user}");
                int tid = NewTransaction(from_user, to_user, amount, desc);
                r = "Транзакция на сумму " + amount + " с номером " + tid.ToString() + " успешно добавлена\r\n" + Command_balance(from_user) + "\r\n" + Command_balance(to_user);
            }
            else
            {
                logger.Debug($"Поиск пользователя '{from_user}'");
                User su = SearchUser(from_user);
                if (su.uid == 0)
                {
                    r = "Пользователь @" + from_user + " не подключен к системе. Регистрация мультитранзакции невозможна";
                    return(r);
                }

                for (int u = 0; u < ToUsers.Count; u++)
                {
                    string to_user = ToUsers[u];
                    logger.Debug($"Пользователь номер '{u}' to '{to_user}'");
                    logger.Debug($"Поиск пользователя '{to_user}'");
                    su = SearchUser(to_user);
                    if (su.uid == 0)
                    {
                        r = "Пользователь @" + to_user + " не подключен к системе. Регистрация мультитранзакции невозможна";
                        return(r);
                    }
                }
                ;

                decimal c_amount    = Math.Floor(amount / (ToUsers.Count));
                string  b           = "";
                decimal last_amount = amount - c_amount * (ToUsers.Count - 1);
                r = "Обнаружена команда мультитранзакции, будет добавлено несколько транзакций с делением суммы на целые части\r\n";
                for (int u = 0; u < ToUsers.Count; u++)
                {
                    string to_user = ToUsers[u];
                    int    tid;
                    if (from_user.ToLower() == to_user.ToLower())
                    {
                        continue;
                    }
                    ;
                    amount = c_amount;
                    if (u < ToUsers.Count - 1)
                    {
                        logger.Debug($"Выполнение в SQL транзакции from:{from_user} amount:{c_amount} to:{to_user}");
                        tid = NewTransaction(from_user, to_user, c_amount, desc);
                    }
                    else
                    {
                        logger.Debug($"Выполнение в SQL транзакции from:{from_user} amount:{last_amount} to:{to_user}");
                        tid = NewTransaction(from_user, to_user, last_amount, desc);
                    };
                    r = r + "Транзакция " + tid.ToString() + " успешно добавлена\r\n";
                    b = b + Command_balance(to_user) + "\r\n";
                }
                ;
                r = r + Command_balance(from_user) + "\r\n" + b;
            };
            logger.Info("Возврат результата команды transaction с сообщением " + r);
            return(r);
        }