/// <summary> /// Constructor for the Complaint class /// </summary> public Complaint(SystemCas sysCse, UserProfile userProfile) { _sysCse = sysCse; _userProfile = userProfile; using (var db = new CrmSystemEntities()) { var assignee = db.UserProfiles.Find(_sysCse.AssigneeId); if (assignee != null) { _departmentEmails = new List <string>() { assignee.Email }; } } // Instantiate a new state machine in the Open state _machine = new StateMachine <State, Trigger>(State.New); // Instantiate a new trigger with a parameter. _assignTrigger = _machine.SetTriggerParameters <string>(Trigger.New); // Configure the Open state _machine.Configure(State.New) .Permit(Trigger.New, State.InProgress); // Configure the Assigned state _machine.Configure(State.InProgress) .SubstateOf(State.InProgress) //.OnEntryFrom(_assignTrigger, InPorgress) // This is where the TriggerWithParameters is used. Note that the TriggerWithParameters object is used, not something from the enum .PermitReentry(Trigger.InProgress) .Permit(Trigger.Close, State.Closed) .Permit(Trigger.Reject, State.Rejected) .Permit(Trigger.Resolve, State.Resolved) .Permit(Trigger.Duplicate, State.Duplicated) .OnExit(OnDeassigned); // Configure the Rejected state _machine.Configure(State.Rejected) .OnEntry(() => _assignee = null) .Permit(Trigger.InProgress, State.Closed); }
public void SendSMSTemplateAsEmail(Dictionary <string, int> smsTemplateEnumValues, SystemCas casData, IPrincipal loggedInUser = null) { InitMail(); string ownerDataUserName = casData.CreatedBy; int assignedToId = casData.AssigneeId.GetValueOrDefault(); int caseId = casData.Id; foreach (var data in smsTemplateEnumValues) { var allMsgTemplates = LanguageFallbackHelper.GetBothLanguageSMSTemplate(data.Value); var msgDefaultLanguage = allMsgTemplates.Select(t => t.DefaultTemplateLanguage).Distinct().FirstOrDefault(); var msgData = allMsgTemplates.Where(t => t.LanguageId == msgDefaultLanguage).FirstOrDefault(); if (msgData == null) { var defaultSystemLanguage = CultureHelper.GetDefaultLanguageId(); if (defaultSystemLanguage != msgDefaultLanguage) { msgData = allMsgTemplates.Where(t => t.LanguageId == defaultSystemLanguage).FirstOrDefault(); } } if (msgData != null && !(string.IsNullOrEmpty(msgData.Description) || string.IsNullOrWhiteSpace(msgData.Description))) { var destinationUserData = new ProfileViewModel(); if (data.Key == GeneralEnums.Send_SMS_To.Citizen.ToString()) { destinationUserData = LanguageFallbackHelper.GetUserProfileByUsername(ownerDataUserName, msgData.DefaultTemplateLanguage); } else if (data.Key == GeneralEnums.Send_SMS_To.Employee.ToString()) { destinationUserData = LanguageFallbackHelper.GetUserProfile(assignedToId, msgData.DefaultTemplateLanguage);; } else { destinationUserData = null; } if (destinationUserData != null && destinationUserData.Id > 0 && (destinationUserData.Email != null)) // TODO using IsNullOrWhiteSpace { msgData.Description = SMSHelper.GetMsgBodyWithParameters(destinationUserData, msgData.Description, caseId); string subject = $"{Constants.EmailTemplate.SubjectSystemCase} - {casData.Title}"; SendMail(FromAddress, new List <string>() { destinationUserData.Email }, subject, msgData.Description); AddEmailToCommunicationLog((int)GeneralEnums.CommunicationLogEnum.Email, msgData.Description, loggedInUser); } } } }