public override int GetHashCode() { int hash = 1; if (ToUser != 0UL) { hash ^= ToUser.GetHashCode(); } hash ^= friendRequestsList_.GetHashCode(); return(hash); }
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); }
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); }
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); }