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
            {
            }
        }
Пример #2
0
        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
            {
            }
        }
Пример #3
0
        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)));
        }