public async Task <IHttpActionResult> GroupMessages(GroupMessageSectionModel groupMessageSectionModel) { var sender = SecurityPrincipal.Current; await _communicationsService.SendSectionGroupMessage(groupMessageSectionModel, sender.PersonUSI, sender.PersonUniqueId); return(Ok()); }
public async Task SendSectionGroupMessage(GroupMessageSectionModel sectionModel, int personUsi, string personUniqueId) { var validEmailTypeDescriptors = _customParametersProvider.GetParameters().descriptors.validEmailTypeDescriptors; // Get a list of all parents associated with the students in the section. var parents = await _studentRepository.GetParentsBySection(personUsi, sectionModel.Section, validEmailTypeDescriptors, _dateProvider.Today()); // Optimization: Hashtable cache to store the translations and not call the translation API n times. var languageHashSubject = new Hashtable(); var languageHashMessage = new Hashtable(); //Translate the message to the preferred language for parent foreach (var parent in parents) { string englishMessage = sectionModel.Subject; string englishSubject = sectionModel.Message; //Check the language code of the parent if is null asign english like default if (string.IsNullOrEmpty(parent.LanguageCode)) { parent.LanguageCode = "en"; } // Check to see if we have translated already. if (!languageHashSubject.ContainsKey(parent.LanguageCode)) { var subjectTrans = await TranslateText(sectionModel.Subject, parent.LanguageCode); languageHashSubject.Add(parent.LanguageCode, subjectTrans); } sectionModel.Subject = languageHashSubject[parent.LanguageCode].ToString(); if (!languageHashMessage.ContainsKey(parent.LanguageCode)) { var messageTrans = await TranslateText(sectionModel.Message, parent.LanguageCode); languageHashMessage.Add(parent.LanguageCode, messageTrans); } sectionModel.Message = languageHashMessage[parent.LanguageCode].ToString(); await SendGroupMessageHandler(new StudentParentAssociationModel { ParentUsi = parent.ParentUsi, Parent = new ParentModel { Email = !string.IsNullOrEmpty(parent.ProfileEmail) ? parent.ProfileEmail : parent.EdFiEmail, ParentUniqueId = parent.ParentUniqueId, Telephone = parent.ProfileTelephone, SMSDomain = parent.ProfileTelephoneSMSSuffixDomain, ParentAlert = new ParentAlertModel { PreferredMethodOfContactTypeId = parent.PreferredMethodOfContactTypeId }, LanguageCode = parent.LanguageCode } }, personUniqueId, sectionModel.Message, sectionModel.Subject, englishSubject, englishMessage, parent.StudentName, parent.StudentUniqueId, $"{parent.StaffFirstName} {parent.StaffLastSurname}", parent.LanguageCode); } }