Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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);
                    }
                }
            }
        }