예제 #1
0
        public async Task Execute(IJobExecutionContext context)
        {
            try
            {
                DAL.DAL_Notification dal_NoTi = new DAL.DAL_Notification();

                DateTime   dateNext    = DateTime.Today.AddDays(1);
                var        arrayUser   = new DAL.DAL_User().GetFromAppointmentDate(dateNext);
                string     html        = System.IO.File.ReadAllText(System.Web.Hosting.HostingEnvironment.MapPath("~/EmailTemplate/EmailTemplate.html"), System.Text.Encoding.UTF8);
                Attachment oAttachment = new Attachment(System.Web.Hosting.HostingEnvironment.MapPath("~/EmailTemplate/logoSendMail.png"));

                oAttachment.ContentId = Guid.NewGuid().ToString().Trim();
                DAL.DAL_Messages dal_message = new DAL.DAL_Messages();

                string strBase64 = string.Empty;

                using (Image image = Image.FromFile(System.Web.Hosting.HostingEnvironment.MapPath("~/EmailTemplate/logoSendMail.png")))
                {
                    using (MemoryStream m = new MemoryStream())
                    {
                        image.Save(m, image.RawFormat);
                        byte[] imageBytes = m.ToArray();
                        strBase64 = "data:image/png;base64," + Convert.ToBase64String(imageBytes);
                    }
                }

                foreach (var recepient in arrayUser)
                {
                    MailMessage message = new MailMessage();
                    message.Attachments.Add(oAttachment);
                    message.From = new MailAddress(ConfigurationManager.AppSettings["User-NetworkCredential"]);
                    message.To.Add(recepient.Email);
                    message.Subject    = "Reminder of Appointment on " + dateNext.ToString("dd/MM/yyyy");
                    message.Body       = html.Replace("{IdLogo}", oAttachment.ContentId).Replace("{Subject}", "Reminder of Appointment on " + dateNext.ToString("dd/MM/yyyy")).Replace("{Body}", "NRIC " + Trinity.Common.CommonUtil.GetQueueNumber(recepient.NRIC) + ", you have been scheduled for urine reporting at CNB ENF A on " + DateTime.Today.ToString("dd/MM/yyyy"));
                    message.IsBodyHtml = true;
                    // Send the email async to avoid blocking the main thread
                    SmtpClient client = new SmtpClient();
                    client.Host = ConfigurationManager.AppSettings["Host"];
                    client.Port = Convert.ToInt32(ConfigurationManager.AppSettings["Port"]);
                    client.UseDefaultCredentials = false;
                    client.EnableSsl             = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableSsl"]);
                    client.Credentials           = new NetworkCredential(ConfigurationManager.AppSettings["User-NetworkCredential"], ConfigurationManager.AppSettings["Password-NetworkCredential"]);

                    client.SendCompleted += (se, ea) =>
                    {
                        client.Dispose();
                        message.Dispose();
                        dal_message.Insert(recepient, message.Subject, message.Body, true);
                        dal_message.Insert(recepient, message.Subject, "NRIC " + Trinity.Common.CommonUtil.GetQueueNumber(recepient.NRIC) + ", you have been scheduled for urine reporting at CNB ENF A on " + DateTime.Today.ToString("dd/MM/yyyy"), false);
                    };

                    client.SendAsync(message, null);
                    //Send notification
                    dal_NoTi.InsertNotification(null, recepient.UserId, message.Subject, message.Body.Replace("cid:" + oAttachment.ContentId, strBase64), false, DateTime.Now, null, EnumNotificationTypes.Notification, EnumStation.DUTYOFFICER);
                }
            }
            catch (Exception)
            {
            }
        }
예제 #2
0
        //[ResponseType(typeof(ResponseModel))]
        public IHttpActionResult GetUserBySmartCardId(string smartcardId)
        {
            var responseModel = new ResponseModel();
            var result        = new DAL.DAL_User().GetUserBySmartCardId(smartcardId);

            return(Ok(result));
        }
예제 #3
0
        public async System.Threading.Tasks.Task <IHttpActionResult> SHPComplete([FromBody] SHPCompleteModel model)
        {
            try
            {
                var user = new DAL.DAL_User().GetByNRIC(model.NRIC);
                new DAL.DAL_QueueNumber().UpdateQueueStatusByUserId(user.UserId, EnumStation.SHP, EnumQueueStatuses.Finished, EnumStation.UT, EnumQueueStatuses.Processing, "", EnumQueueOutcomeText.Processing);
                await System.Threading.Tasks.Task.Run(() => Trinity.SignalR.Client.Instance.BackendAPISend(NotificationNames.SHP_COMPLETED, model.NRIC));

                return(Ok(true));
            }
            catch (Exception)
            {
                return(Ok(false));
            }
        }
예제 #4
0
        public async System.Threading.Tasks.Task <IHttpActionResult> SSPComplete([FromBody] SSPCompleteModel model)
        {
            try
            {
                var user = new DAL.DAL_User().GetByNRIC(model.NRIC);
                new DAL.DAL_QueueNumber().UpdateQueueStatusByUserId(user.UserId, EnumStation.SSP, EnumQueueStatuses.Finished, EnumStation.DUTYOFFICER, EnumQueueStatuses.TabSmartCard, EnumMessage.SelectOutCome, EnumQueueOutcomeText.TapSmartCardToContinue);
                new DAL.DAL_Labels().DeleteLabel(user.UserId, DateTime.Today, EnumLabelType.UB);
                await System.Threading.Tasks.Task.Run(() => Trinity.SignalR.Client.Instance.BackendAPISend(NotificationNames.SSP_COMPLETED, model.NRIC));

                return(Ok(true));
            }
            catch (Exception)
            {
                return(Ok(false));
            }
        }
예제 #5
0
 public IHttpActionResult SSPGetOfficerName(string NRIC)
 {
     Trinity.DAL.DBContext.Membership_Users user = new DAL.DAL_User().GetByNRIC(NRIC);
     if (user != null && user.Membership_UserRoles != null && user.Membership_UserRoles.Any(d => d.Membership_Roles != null &&
                                                                                            (d.Membership_Roles.Name == EnumUserRoles.CaseOfficer || d.Membership_Roles.Name == EnumUserRoles.DutyOfficer || d.Membership_Roles.Name == EnumUserRoles.EnrolmentOfficer)))
     {
         return(Ok(new SSPCaseOfficerModel()
         {
             Name = user.Name
         }));
     }
     else
     {
         return(Ok());
     }
 }
예제 #6
0
        internal bool Login(ref User logginguser)
        {
            if (!string.IsNullOrEmpty(logginguser.activationKey) && logginguser.activationKey != Guid.Empty.ToString())
            {
                bool IsLoginSuccess = new DAL.DAL_User().Login(ref logginguser);
                if (IsLoginSuccess)
                {
                    this.userRepository.Add(logginguser);
                }
                //HttpContext.Current.Session["UserRepository"] = this.userRepository;
                return(true);
            }
            else
            {
                return(new DAL.DAL_User().Login(ref logginguser, true));
            }

            return(false);
        }
예제 #7
0
 public IHttpActionResult SSPVerifyDutyOfficer([FromBody] SSPVerifyDutyOfficerModel data)
 {
     try
     {
         var             dalUser = new DAL.DAL_User();
         ApplicationUser appUser = dalUser.Login(data.ID, data.Password);
         if (appUser != null)
         {
             if (dalUser.IsInRole(appUser.Id, EnumUserRoles.DutyOfficer))
             {
                 return(Ok(true));
             }
         }
     }
     catch (Exception)
     {
     }
     return(Ok(false));
 }
예제 #8
0
        public async System.Threading.Tasks.Task <IHttpActionResult> SSPPostNotification([FromBody] SSPNotificationModel data)
        {
            try
            {
                LogManager.Debug(string.Format("Begin SSPPostNotification, NRIC:{0}, Type:{1}, Datetime:{2}, Notification_Code:{3}, Content:{4}", data.NRIC, data.Type, data.Datetime, data.notification_code, data.Content));
                Trinity.DAL.DBContext.Membership_Users user = null;
                if (!string.IsNullOrEmpty(data.NRIC))
                {
                    user = new DAL.DAL_User().GetByNRIC(data.NRIC);
                }
                string Subject = data.Content;
                if (Subject.Length > 100)
                {
                    Subject = Subject.Substring(0, 96) + " ...";
                }
                string IDNoti = new DAL.DAL_Notification().InsertNotification(user != null ? user.UserId : null, null, Subject, data.Content, false, data.Datetime, data.notification_code, data.Type, EnumStation.SSP);
                if (!string.IsNullOrEmpty(IDNoti))
                {
                    if (data.Type == EnumNotificationTypes.Error && user != null)
                    {
                        new DAL.DAL_QueueNumber().UpdateQueueStatusByUserId(user.UserId, EnumStation.SSP, EnumQueueStatuses.Errors, EnumStation.DUTYOFFICER, EnumQueueStatuses.Finished, EnumMessage.LeakageDeletected, EnumQueueOutcomeText.Processing);

                        await System.Threading.Tasks.Task.Run(() => Trinity.SignalR.Client.Instance.BackendAPISend(NotificationNames.SSP_ERROR, data.NRIC));
                    }
                    await System.Threading.Tasks.Task.Run(() => Trinity.SignalR.Client.Instance.SendToAppDutyOfficers((user != null ? user.UserId : null), Subject, data.Content, data.Type, EnumStation.SSP, false, IDNoti));

                    LogManager.Debug("SSPPostNotification completed successfully");
                    return(Ok(true));
                }
                else
                {
                    LogManager.Error("SSPPostNotification failed.");
                    return(Ok(false));
                }
            }
            catch (Exception)
            {
                return(Ok(false));
            }
        }
예제 #9
0
        public IHttpActionResult SSPAuthenticate(string NRIC, string SmartCardUID)
        {
            Trinity.DAL.DBContext.Membership_Users user = new DAL.DAL_User().GetByNRIC(NRIC);
            if (user == null)
            {
                return(Ok(new SSPAuthenticateModel()
                {
                    Found = false,
                    Message = "NRIC " + NRIC + " is not registered"
                }));
            }
            if (string.IsNullOrEmpty(SmartCardUID))
            {
                return(Ok(new SSPAuthenticateModel()
                {
                    Name = user.Name,
                    Found = true,
                    Right = user.RightThumbFingerprint,
                    Left = user.LeftThumbFingerprint,
                    Message = "Success"
                }));
            }
            var smartCard = new DAL.DAL_IssueCard().GetIssueCardBySmartCardId(SmartCardUID);

            if (smartCard == null)
            {
                return(Ok(new SSPAuthenticateModel()
                {
                    Found = false,
                    Message = "Your smart card does not exist"
                }));
            }
            else if (smartCard.Status == EnumIssuedCards.Inactive)
            {
                return(Ok(new SSPAuthenticateModel()
                {
                    Found = false,
                    Message = "Your smart card does not work"
                }));
            }
            else if (smartCard.Status == EnumIssuedCards.Active && smartCard.Expired_Date < DateTime.Today)
            {
                return(Ok(new SSPAuthenticateModel()
                {
                    Found = false,
                    Message = "Your smart card has expired"
                }));
            }

            if (user.UserId != smartCard.UserId)
            {
                return(Ok(new SSPAuthenticateModel()
                {
                    Found = false,
                    Message = "Smart cards are not yours"
                }));
            }
            else
            {
                return(Ok(new SSPAuthenticateModel()
                {
                    Name = user.Name,
                    Found = true,
                    Right = user.RightThumbFingerprint,
                    Left = user.LeftThumbFingerprint,
                    Message = "Success"
                }));
            }
        }