public static async Task LogAsync(Credentials user, LogActivityType activity, string message)
 {
     using (var repo = new Repository())
     {
         var log = repo.Create<activity_log>();
         log.action_id = (int) activity;
         log.credentials_id = Authentication.Credentials.CredId;
         log.message = message;
         log.created = await repo.GetNowAsync();
         repo.Add(log);
         await repo.SaveChangesAsync();
     }
 }
        public static async Task<TimeSpan> TimeRemainingAsync(this form f)
        {
            using (var repo = new Repository())
            {
                var dateExpired = f.submission_date;
                var dateNow = await repo.GetNowAsync();
                dateExpired = dateExpired.AddYears(dateNow.Year - dateExpired.Year);

                var timeRemaining = TimeSpan.Zero;
                if (dateExpired > dateNow)
                    timeRemaining = (dateExpired - dateNow).Duration();
                return timeRemaining;
            }
        }
 public static async void NotifyAboutForms(Credentials user)
 {
     using (var repo = new Repository())
     {
         var formList = new List<form>();
         if (user.IsEdu)
         {
             var kind = (await repo.GetEdu(user.EduId)).edu_kind;
             formList = kind.forms.ToList();
         } 
         else if (user.IsMunicipality)
         {
             formList = await repo.GetMunicipalityForms();
         }
         else if (user.IsRegion)
         {
             formList = await repo.GetRegionForms();
         }
         var now = await repo.GetNowAsync();
         foreach (var form in formList)
         {
             IForm uploadedForm = null;
             if (user.IsEdu)
                 uploadedForm = await repo.FindEduFormData(form.form_id, user.EduId, now.Year);
             else if (user.IsMunicipality)
                 uploadedForm = await repo.FindMunicipalityFormData(form.form_id, user.MunitId, now.Year);
             else if (user.IsRegion)
                 uploadedForm = await repo.FindRegionFormData(form.form_id, user.RegionId, now.Year);
             if (uploadedForm != null)
                 continue;
             var timeRemaining = await form.TimeRemainingAsync();
             if (timeRemaining == TimeSpan.Zero || timeRemaining.Days >= 30) 
                 continue;
             var warn = new Notifications.ExpireWarn()
             {
                 Now = now,
                 TimeRemaining = timeRemaining,
                 FormName = form.name,
                 FormId = form.form_id
             };
             Notifications.Add(warn);
         }
     }
 }