public static void RunNotificationsAlgorithm(string ConnectionString, string Language) { HrUnitOfWork unitofwork = new HrUnitOfWork(new HrContextFactory(ConnectionString)); try { DateTime Today = DateTime.Now.Date; List <EmploymentPaper_ToNotify> EmpPapers_ToNotify = unitofwork.CompanyDocsViewsRepository.EmploymentPapersForNotifications(); string EmpIDs = (EmpPapers_ToNotify.Any()) ? EmpPapers_ToNotify.Select(a => a.EmpID.ToString()).Aggregate <string>((x1, x2) => x1 + "," + x2).ToString() : ""; List <FormDropDown> EmpsLangs = unitofwork.MeetingRepository.GetUsersLang(EmpIDs); List <NotifyLetter> NotifyLettersList = new List <NotifyLetter>(); EmpPapers_ToNotify.ForEach(e => { FormDropDown EmpLang = EmpsLangs.Where(a => a.id == e.EmpID).FirstOrDefault(); string Lang = ""; if (EmpLang != null) { Lang = EmpLang.name; } NotifyLetter NL = new NotifyLetter() { CompanyId = e.CompanyId.Value, EmpId = e.EmpID, NotifyDate = Today, NotifySource = MsgUtils.Instance.Trls(Lang, e.DocTypeName), SourceId = e.Stream_Id.ToString(), Sent = true, EventDate = e.ExpiryDate.Value, Description = MsgUtils.Instance.Trls(Lang, "you must renew") + " " + e.PaperFileName + " " + MsgUtils.Instance.Trls(Lang, "Before") + " " + e.ExpiryDate.Value.ToMyDateString(Lang, "yyyy-MM-dd") }; //unitofwork.NotifyLetterRepository.Add(NL); NotifyLettersList.Add(NL); }); string ErrorMessage; AddNotifyLetters AddNotifyLetters = new AddNotifyLetters(unitofwork, NotifyLettersList, Language); bool Result = AddNotifyLetters.Run(out ErrorMessage); //unitofwork.SaveChanges(); } catch (Exception ex) { unitofwork.HandleDbExceptions(ex); } finally { } }
public void RunNotificationsAlgorithm(string ConnectionString, SendFormPageVM model, string Culture) { HrUnitOfWork unitofwork = new HrUnitOfWork(new HrContextFactory(ConnectionString)); try { DateTime Today = DateTime.Now.Date; List <int> EmployeesToNotificate = GetEmpIdList(ConnectionString, model, Culture); string FormName = unitofwork.Repository <FlexForm>().Where(a => a.Id == model.FormId).SingleOrDefault().Name; List <FormDropDown> EmpsLangs = unitofwork.MeetingRepository.GetUsersLang((EmployeesToNotificate.Any()) ? EmployeesToNotificate.Select(a => a.ToString()).Aggregate <string>((x1, x2) => x1 + "," + x2).ToString() : ""); foreach (var e in EmployeesToNotificate.Distinct()) { string Lang; if (EmpsLangs.Select(a => a.id).Contains(e)) { Lang = EmpsLangs.Where(a => a.id == e).FirstOrDefault().name; } else { Lang = Culture; } NotifyLetter NL = new NotifyLetter() { CompanyId = model.CompanyId, EmpId = e, NotifyDate = Today, NotifySource = MsgUtils.Instance.Trls(Lang, "Questionnaire") + " " + MsgUtils.Instance.Trls(Lang, FormName), SourceId = model.FormId.ToString(), Sent = true, EventDate = model.ExpiryDate, Description = MsgUtils.Instance.Trls(Lang, "Please fill") + " " + MsgUtils.Instance.Trls(Lang, FormName) + " " + MsgUtils.Instance.Trls(Lang, "Before") + " " + model.ExpiryDate.ToShortDateString() }; unitofwork.NotifyLetterRepository.Add(NL); } unitofwork.SaveChanges(); } catch (Exception ex) { unitofwork.HandleDbExceptions(ex); } finally { } }
public async Task <ActionResult> UserProfile(UserViewModel model, string Id, int EmpId, OptionsViewModel moreInfo, UserCompaniesVM grid1) { var Errors = new List <Error>(); var _hrUnitOfWork = new HrUnitOfWork(new HrContextFactory(System.Configuration.ConfigurationManager.ConnectionStrings["HrContext"].ConnectionString)); var ServerValidationEnabled = System.Configuration.ConfigurationManager.AppSettings["ServerValidationEnabled"] == "true"; if (ModelState.IsValid) { if (ServerValidationEnabled) { var columns = Models.Utils.GetColumnViews(ModelState.Where(a => !a.Key.Contains('.'))); Errors = _hrUnitOfWork.SiteRepository.CheckForm(new CheckParm { CompanyId = User.Identity.GetDefaultCompany(), ObjectName = "UserProfile", TableName = "AspNetUsers", Columns = columns, Culture = User.Identity.GetLanguage() }); if (Errors.Count() > 0) { foreach (var e in Errors) { foreach (var errorMsg in e.errors) { ModelState.AddModelError(errorMsg.field, errorMsg.message); } } return(Json(Models.Utils.ParseFormErrors(ModelState))); } } var db = HttpContext.GetOwinContext().Get <UserContext>(); var _userManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>(); //var db = new UserContext(); //var _userManager = new ApplicationUserManager(new UserStore<ApplicationUser>(db)); ApplicationUser user = _userManager.FindById(Id); IdentityResult res; var loginId = User.Identity.GetUserId(); model.Messages = getMessage(model.Culture); //Update User if (user != null) { string OldCulture = user.Language; string OldTimeZone = user.TimeZone; int OldCompany = user.DefaultCompany.Value; AutoMapper(new Models.AutoMapperParm { Destination = user, Source = model, ObjectName = "UserProfile", Options = moreInfo }, _hrUnitOfWork); user.Language = model.Language == null ? "en-GB" : model.Language; user.Messages = getMessage(model.Culture); model.NewUser = false; user.LockoutEnabled = model.LockoutEnabled; if ((user.Id == loginId) && (user.TimeZone != OldTimeZone) && (OldCulture != model.Language) && (user.Language != null) && (user.TimeZone != null)) { ChangeAll(model.TimeZone, model.Language, model.DefaultCompany.Value); } else if ((user.Id == loginId) && (OldCulture != null) && (OldCulture != model.Language)) { ChangeCulture(model.Language, model.DefaultCompany.Value); } else if ((user.Id == loginId) && (OldTimeZone != null) && (OldTimeZone != model.TimeZone)) { ChangeTimeZone(model.TimeZone, model.DefaultCompany.Value); } else if ((user.Id == loginId) && (OldCompany != User.Identity.GetDefaultCompany())) { ChangeDefaultCompany(model.DefaultCompany.Value); } } else //New User { user = new ApplicationUser { UserName = model.UserName, Email = model.Email, LockoutEnabled = model.LockoutEnabled }; model.NewUser = true; } // database transactions //var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled); var trans = db.Database.BeginTransaction(); var status = (model.NewUser == true ? PersonStatus.UserProfile : 0); if (!model.NewUser) { res = await _userManager.UpdateAsync(user); } else { if (model.Password == null) { user.ResetPassword = true; res = await _userManager.CreateAsync(user); } else { res = await _userManager.CreateAsync(user, model.Password); } } moreInfo.VisibleColumns.Remove("Id"); if (res.Errors.Count() > 0) { var err = res.Errors.FirstOrDefault().Split(' ')[0]; if (err == "Passwords") { ModelState.AddModelError("Password", MsgUtils.Instance.Trls("Passwordmustnotlest6")); } else if (err == "User") { ModelState.AddModelError("UserName", MsgUtils.Instance.Trls("Namemustcontaindigitorchar")); } else { ModelState.AddModelError("", MsgUtils.Instance.Trls(res.Errors.FirstOrDefault())); } trans.Rollback(); trans.Dispose(); return(Json(Models.Utils.ParseFormErrors(ModelState))); } if (model.NewUser) { AutoMapper(new Models.AutoMapperParm { Destination = user, Source = model, ObjectName = "UserProfile", Options = moreInfo }, _hrUnitOfWork); user.Messages = getMessage(model.Culture); user.Language = model.Language == null ? "en-GB" : model.Language; user.DefaultCompany = User.Identity.GetDefaultCompany(); user.EmpId = EmpId; model.EmpId = EmpId; model.DefaultCompany = user.DefaultCompany; model.Id = user.Id; } SaveGrid(grid1, ModelState.Where(a => a.Key.Contains("grid1")), user, _hrUnitOfWork, db); try { //if (model.NewUser) //{ // string Message; // SendNotifyLetterMethod(_hrUnitOfWork, user.UserName, EmpId, user.Id, out Message); //} db.SaveChanges(); } catch (Exception ex) { var message = _hrUnitOfWork.HandleDbExceptions(ex); if (message == "Date Already Exists") { message = "UserHaveOnlyRole"; } //scope.Dispose(); trans.Rollback(); trans.Dispose(); return(Json(MsgUtils.Instance.Trls(message))); } trans.Commit(); trans.Dispose(); if (status != PersonStatus.Done) { var person = _hrUnitOfWork.PeopleRepository.GetPerson(model.EmpId); person.Status = PersonStatus.Done; model.Status = PersonStatus.Done; _hrUnitOfWork.SaveChanges(); } return(Json("OK," + ((new JavaScriptSerializer()).Serialize(model)))); } return(Json(Models.Utils.ParseFormErrors(ModelState))); }