public ApiResponse GetSentMessages() { if (!this.GetCurrentUser().CanSendMessage || !this.GetCurrentUser().IsAdmin) { return new ApiResponse(true) { Data = null } } ; var userId = this.GetCurrentUser().Id; using (var context = new AgmDataContext()) { var res = context.Messages.Where(m => m.FromUserId == userId && !m.IsDeleted).OrderByDescending(m => m.InsertDate).ToList(); res.ForEach(i => i.ReceiverIds = context.MessageReceivers.Where(m => m.MessageId == i.Id).Select(m => m.ToUserId).ToList()); res.ForEach(i => i.Receivers = string.Join(",", context.Users.Where(u => i.ReceiverIds.Contains(u.Id)).OrderBy(u => u.LastName).Select(u => u.LastName + " " + u.FirstName).ToList())); return(new ApiResponse(true) { Data = context.Messages.Where(m => m.FromUserId == userId && !m.IsDeleted).OrderByDescending(m => m.InsertDate).ToList() }); } }
public ApiResponse Set(JobAdSaveIn objToSave) { this.CheckCurrentUserPermission(((x) => x.SectionJobAdsVisible)); var jobAd = objToSave.JobAd; using (var context = new AgmDataContext()) { if (jobAd.Id == 0 || !context.JobAds.Any(j => j.Id == jobAd.Id)) { context.JobAds.Add(jobAd); } else { context.JobAds.Attach(jobAd); ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.ChangeObjectState(jobAd, EntityState.Modified); } context.SaveChanges(); } var completePath = HttpContext.Current.Server.MapPath(string.Format("../../../annunci/{0}.txt", jobAd.Id.ToString())); if (File.Exists(completePath)) { var newName = HttpContext.Current.Server.MapPath(string.Format("../../../annunci/{0}_{1}.txt", jobAd.Id.ToString(), DateTime.Now.ToFileTimeUtc().ToString())); File.Move(completePath, newName); } using (StreamWriter sw = new StreamWriter(new FileStream(completePath, FileMode.Create), Encoding.GetEncoding(1252))) { sw.Write(objToSave.JobAdText); sw.Flush(); } return(new ApiResponse(true)); }
public ApiResponse CheckLock([FromBody] dynamic lockIn) { User currentUser = this.GetCurrentUser(); var userId = (int)lockIn.Id; var month = (string)lockIn.Month; this.CheckCurrentUserPermission(userId, ((x) => x.SectionUsersVisible)); using (var db = new AgmDataContext()) { if (!currentUser.IsAdmin) { MonthlyReportCalendar monthlycalendar = this.GetUserMonthlyCalendar(userId, month); User user = db.Users.First(u => u.Id == userId); if (monthlycalendar.Days.Where(x => x.OvertimeHours > 0 || (x.OrdinaryHours > 0 && x.OrdinaryHours != 8) || (!x.Festivity && !(x.Date.DayOfWeek == DayOfWeek.Saturday) && !(x.Date.DayOfWeek == DayOfWeek.Sunday) && !(user.IsShiftWorker) && x.OrdinaryHours != 8) || ((x.Festivity || x.Date.DayOfWeek == DayOfWeek.Saturday || x.Date.DayOfWeek == DayOfWeek.Sunday) && x.OrdinaryHours > 0 && !(user.IsShiftWorker))).Count() > 0) { return(new ApiResponse(false)); } } return(new ApiResponse(true)); } }
public ApiResponse GetAll() { using (var context = new AgmDataContext()) { var email = (Thread.CurrentPrincipal as CustomPrincipal).User.Split('$').GetValue(0) as string; var user = context.Users.Single(u => u.Email == email); var currentMonth = string.Format("{0}{1}", DateTime.Today.Year.ToString(), DateTime.Today.Month.ToString().PadLeft(2, '0')); var mhReportLocks = context.MHReportLocks.Where(l => l.Month == currentMonth).ToList(); if (!user.SectionUsersVisible) { return(new ApiResponse(false)); } var users = context.Users.Where(u => u.Email != email).OrderBy(u => u.LastName).ToList(); return(new ApiResponse(true) { Data = users.Select(u => new { u.Id, u.Name, u._isActive, u._isDeleted, u.Image, u.Username, u.IdExport, currentMHReportLocked = mhReportLocks.Any(l => l.UserId == u.Id), u.UserType, u.UserBackgroundColor, u.UserForeColor }) }); } }
public ApiResponse InsertFestivity(Festivity newFestivity) { using (var context = new AgmDataContext()) { var email = (Thread.CurrentPrincipal as CustomPrincipal).User.Split('$').GetValue(0) as string; var user = context.Users.Single(u => u.Email == email); if (!user.SectionUsersVisible) { return(new ApiResponse(false)); } if (context.Festivities.Any(r => r.Date == newFestivity.Date)) { return new ApiResponse(false) { Errors = new ApiResponseError[] { new ApiResponseError() { Message = "Festività già esistente!" } } } } ; context.Festivities.Add(newFestivity); context.SaveChanges(); return(new ApiResponse(true)); } }
public ApiResponse AddNotice([FromBody] Notice notIn) { this.CheckCurrentUserPermission((x) => x.CanSendMessage || x.IsAdmin); var userId = this.GetCurrentUser().Id; using (var context = new AgmDataContext()) { var notToAdd = new Notice() { Date = DateTime.Now, Subject = notIn.Subject, Text = notIn.Text, UserId = userId, IsDeleted = false }; var not = context.Notices.Add(notToAdd); var res = context.SaveChanges(); if (res > 0) { return new ApiResponse(true) { Data = not } } ; return(new ApiResponse(false)); } }
public ApiResponse DeleteSentMessage(dynamic idIn) { this.CheckCurrentUserPermission((x) => x.CanSendMessage || x.IsAdmin); int id = (int)idIn; var userId = this.GetCurrentUser().Id; using (var context = new AgmDataContext()) { var messageReceiver = context.MessageReceivers.FirstOrDefault(i => i.Id == id && !i.IsDeleted); if (messageReceiver == null) { return(new ApiResponse(false)); } messageReceiver.IsDeleted = true; var res = context.SaveChanges(); if (res > 0) { return(new ApiResponse(true)); } return(new ApiResponse(false)); } }
public static MonthlyReportCalendar GetUserMonthlyCalendar(this ApiController o, int userId, string month) { using (var context = new AgmDataContext()) { return(new MonthlyReportCalendar(context.MonthlyReportDays(userId, month).ToList())); } }
public ApiResponse GetCurrentUser() { using (var context = new AgmDataContext()) { var email = (Thread.CurrentPrincipal as CustomPrincipal).User.Split('$').GetValue(0) as string; var user = context.Users.Single(u => u.Email == email && !u._isDeleted && u._isActive == 1); return(new ApiResponse(true) { Data = new { user.Id, user.Name, user.Image, user.Email, user.SectionUsersVisible, user.SectionJobAdsVisible, user.SectionJobApplicantsVisible, user.SectionExportVisible, user.CanDeleteJobApplicants, user.CanSendMessage, user.IsAdmin, user.IsShiftWorker, user.UserType, user.UserBackgroundColor, user.UserForeColor } }); } }
public ApiResponse Delete(dynamic inId) { int id = (int)inId; this.CheckCurrentUserPermission(id, ((x) => x.SectionUsersVisible)); using (var context = new AgmDataContext()) { var user = context.Users.FirstOrDefault(u => u.Id == id); if (user == null) { return(new ApiResponse(false)); } user._isDeleted = true; var res = context.SaveChanges(); if (res > 0) { return(new ApiResponse(true)); } return(new ApiResponse(false)); } }
public ApiResponse UpdateMealVoucherOptions(MealVoucherOptions mealVoucherOptions) { using (var context = new AgmDataContext()) { var email = (Thread.CurrentPrincipal as CustomPrincipal).User.Split('$').GetValue(0) as string; var user = context.Users.Single(u => u.Email == email); if (!user.SectionUsersVisible) { return(new ApiResponse(false)); } if (!context.Options.Any(o => o.Section == OptionSection.MealVoucher)) { Option newOption = new Option() { Section = OptionSection.MealVoucher, Value = mealVoucherOptions }; context.Options.Add(newOption); } else { var optionToupdate = context.Options.First(o => o.Section == OptionSection.MealVoucher); optionToupdate.SerializedValue = null; optionToupdate.Value = mealVoucherOptions; } context.SaveChanges(); return(new ApiResponse(true)); } }
public ApiResponse GetDetail(int id) { this.CheckCurrentUserPermission(id, ((x) => x.SectionUsersVisible)); using (var context = new AgmDataContext()) { var currentUser = this.GetCurrentUser(); var user = context.Users.FirstOrDefault(u => u.Id == id && !u._isDeleted); if (user == null && id == 0) { user = new User(); } if (!currentUser.SectionUsersVisible) { user.IdExport = -1; } return(new ApiResponse(true) { Data = user }); } }
public ApiResponse ExportRI(string year, string month) { var exportCode = new Dictionary <int, string>() { { 0, "020" }, { 1, "805" }, { 2, "100" }, { 3, "102" }, { 4, "104" }, { 5, "101" }, { 6, "103" }, { 7, "105" }, { 8, "290" }, }; var res = new List <string>(); string monthSearch = year + month; using (var context = new AgmDataContext()) { var users = context.Users.ToList(); foreach (var user in users.Where(u => !u.IsDeleted && u.IsActive && u.IdExport.HasValue)) { var retItems = context.RetributionItems.Where(r => r.UserId == user.Id && r.Month == monthSearch); if (retItems.Any()) { foreach (var item in retItems) { string pattern = "{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}"; res.Add(string.Format(pattern, "00000", "00", user.IdExport.Value.ToString().PadLeft(4, '0'), " ", exportCode[(int)item.Type], " ", (item.Qty * 1000).ToString().PadLeft(7, '0'), ((int)(item.Amount * 100000)).ToString().PadLeft(11, '0'), ((int)(item.Total * 100)).ToString().PadLeft(9, '0'), year.Substring(2), month, "0")); } } } } Guid newGuid = Guid.NewGuid(); var mappedPath = System.Web.Hosting.HostingEnvironment.MapPath(string.Format("~/Exports/{0}", newGuid)); using (FileStream f = new FileStream(mappedPath, FileMode.Create)) { using (StreamWriter sw = new StreamWriter(f)) { foreach (var item in res) { sw.WriteLine(item); } sw.Flush(); } } return(new ApiResponse(true) { Data = newGuid.ToString() }); }
public ApiResponse Set(JobApplicant objToSave) { this.CheckCurrentUserPermission(((x) => x.SectionJobApplicantsVisible)); objToSave.JobCategory = null; objToSave.Status = null; objToSave.StatusReason = null; objToSave.User = null; using (var context = new AgmDataContext()) { var user = context.Users.First(u => u.Id == objToSave.UserId); if (user == null || !user.SectionJobApplicantsVisible) { objToSave.UserId = this.GetCurrentUser().Id; } if (objToSave.Id == 0 || !context.JobApplicants.Any(j => j.Id == objToSave.Id)) { context.JobApplicants.Add(objToSave); } else { context.JobApplicants.Attach(objToSave); ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.ChangeObjectState(objToSave, EntityState.Modified); } context.SaveChanges(); } return(new ApiResponse(true)); }
public ApiResponse InsertJobCategory(JobCategory newJobCategory) { using (var context = new AgmDataContext()) { var email = (Thread.CurrentPrincipal as CustomPrincipal).User.Split('$').GetValue(0) as string; var user = context.Users.Single(u => u.Email == email); if (!user.SectionUsersVisible) { return(new ApiResponse(false)); } if (context.JobCategories.Any(r => r.Name == newJobCategory.Name && r.IsDeleted == false)) { return new ApiResponse(false) { Errors = new ApiResponseError[] { new ApiResponseError() { Message = "Categoria già esistente!" } } } } ; context.JobCategories.Add(newJobCategory); context.SaveChanges(); return(new ApiResponse(true)); } }
public ApiResponse Autocomplete(dynamic objIn) { this.CheckCurrentUserPermission((int)objIn.id, ((x) => x.SectionUsersVisible)); try { var userId = (int)objIn.id; var cultureIt = CultureInfo.GetCultureInfo("it-IT"); string month = objIn.month; var currentMonthDate = DateTime.Parse(month, cultureIt); var currentMonthString = currentMonthDate.ToString("yyyy-MM-dd", cultureIt); using (var context = new AgmDataContext()) { var monthMinimal = currentMonthDate.ToString("yyyyMM", cultureIt); if (context.MHReportLocks.Any(l => l.UserId == userId && l.Month == monthMinimal && !l.IsDeleted)) { return(new ApiResponse(false)); } var user = context.Users.First(u => u.Id == userId); if (user != null) { var userHourReports = context.MonthlyReportHours.Where(r => r.UserId == userId && r.Month == currentMonthDate.Month).ToList(); var hourReasons = context.HourReasons.ToList(); var holidays = context.Festivities.Where(f => !f.IsDeleted).ToList(); var currentDate = new DateTime(currentMonthDate.Year, currentMonthDate.Month, 1); var endDate = new DateTime(currentMonthDate.Year, currentMonthDate.Month, DateTime.DaysInMonth(currentMonthDate.Year, currentMonthDate.Month)); while (currentDate <= endDate) { if (currentDate.DayOfWeek != DayOfWeek.Saturday && currentDate.DayOfWeek != DayOfWeek.Sunday && holidays.All(h => h.Date != currentDate) && !userHourReports.Any(r => r.Date == currentDate)) { context.MonthlyReportHours.Add(new MonthlyReportHour() { UserId = user.Id, Day = currentDate.Day, Month = currentDate.Month, Year = currentDate.Year, HoursRaw = "8", ReasonId = hourReasons.First(r => r.Name == "ordinarie").Id }); } currentDate = currentDate.AddDays(1); } context.SaveChanges(); } } return(new ApiResponse(true)); } catch (Exception e) { return(new ApiResponse(false) { Errors = (new List <ApiResponseError>() { new ApiResponseError() { Message = e.Message } }).ToArray() }); } }
public ApiResponse UpdateRetributionItems(List <RetributionItem> objIn) { var userId = objIn[0].UserId; this.CheckCurrentUserPermission(userId, ((x) => x.SectionUsersVisible)); try { using (var db = new AgmDataContext()) { foreach (var item in objIn) { if (item.Total == 0.00 && db.RetributionItems.Any( r => r.Month == item.Month && r.Type == item.Type && r.UserId == item.UserId)) { var dbItem = db.RetributionItems.First( r => r.Month == item.Month && r.Type == item.Type && r.UserId == item.UserId); db.RetributionItems.Remove(dbItem); } if (item.Total != 0.00 && !db.RetributionItems.Any( r => r.Month == item.Month && r.Type == item.Type && r.UserId == item.UserId)) { db.RetributionItems.Add(item); } if (item.Total != 0.00 && db.RetributionItems.Any( r => r.Month == item.Month && r.Type == item.Type && r.UserId == item.UserId)) { var dbItem = db.RetributionItems.First( r => r.Month == item.Month && r.Type == item.Type && r.UserId == item.UserId); dbItem.Qty = item.Qty; dbItem.Amount = item.Amount; dbItem.Total = item.Total; } db.SaveChanges(); } } return(new ApiResponse(true)); } catch (Exception e) { return(new ApiResponse(false) { Errors = (new List <ApiResponseError>() { new ApiResponseError() { Message = e.Message } }).ToArray() }); } }
public ApiResponse UserExists(string email) { using (var context = new AgmDataContext()) { return(new ApiResponse(true) { Data = context.Users.Any(u => u.Email.ToLower().Equals(email.ToLower())) }); } }
public ApiResponse GetNotices() { using (var context = new AgmDataContext()) { var notices = context.Notices.Where(x => !x.IsDeleted).OrderByDescending(x => x.Date).ToList(); return(new ApiResponse(true) { Data = notices }); } }
public static User GetCurrentUser(this ApiController o) { using (var context = new AgmDataContext()) { var currentEmail = (Thread.CurrentPrincipal as CustomPrincipal).User.Split('$').GetValue(0) as string; var currentUser = context.Users.Single( u => u.Email.ToLower() == currentEmail.ToLower() && !u._isDeleted && u._isActive == 1); return(currentUser); } }
public static void CheckCurrentUserPermission(this ApiController o, Func <User, bool> checkFunction) { using (var context = new AgmDataContext()) { var currentEmail = (Thread.CurrentPrincipal as CustomPrincipal).User.Split('$').GetValue(0) as string; var currentUser = context.Users.Single(u => u.Email.ToLower() == currentEmail.ToLower() && !u._isDeleted && u._isActive == 1); if (!checkFunction(currentUser)) { throw new Exception("Operazione non autorizzata"); } } }
public ApiResponse GetJobCategory() { this.CheckCurrentUserPermission(((x) => x.SectionJobApplicantsVisible)); using (var context = new AgmDataContext()) { var res = context.JobCategories.Where(j => j.IsDeleted == false).ToList(); return(new ApiResponse(true) { Data = res.OrderBy(i => i.Name) }); } }
public ApiResponse Get() { this.CheckCurrentUserPermission(((x) => x.SectionJobApplicantsVisible)); using (var context = new AgmDataContext()) { var res = context.JobApplicants.Include("JobCategory").Include("Status").Include("StatusReason").Include("User").ToList().OrderByDescending(a => a.InterviewDate); return(new ApiResponse(true) { Data = res }); } }
public ApiResponse GetContractType() { this.CheckCurrentUserPermission(((x) => x.SectionJobApplicantsVisible)); using (var context = new AgmDataContext()) { var res = context.ContractTypes.ToList(); return(new ApiResponse(true) { Data = res.OrderBy(i => i.Name) }); } }
public ApiResponse UpdateJobCategory(JobCategory newJobCategory) { if (ModelState.IsValid) { using (var context = new AgmDataContext()) { var email = (Thread.CurrentPrincipal as CustomPrincipal).User.Split('$').GetValue(0) as string; var user = context.Users.Single(u => u.Email == email); if (!user.SectionUsersVisible) { return(new ApiResponse(false)); } if (!context.JobCategories.Any(r => r.Id == newJobCategory.Id && r.IsDeleted == false)) { return new ApiResponse(false) { Errors = new ApiResponseError[] { new ApiResponseError() { Message = "Categoria non esistente!" } } } } ; if (context.JobCategories.Any(r => r.Id != newJobCategory.Id && r.Name == newJobCategory.Name && r.IsDeleted == false)) { return new ApiResponse(false) { Errors = new ApiResponseError[] { new ApiResponseError() { Message = "Nome categoria già utilizzato!" } } } } ; context.JobCategories.Attach(newJobCategory); ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.ChangeObjectState(newJobCategory, EntityState.Modified); context.SaveChanges(); return(new ApiResponse(true)); } } return(new ApiResponse(false)); }
public ApiResponse GetStatus() { this.CheckCurrentUserPermission(((x) => x.SectionJobApplicantsVisible)); using (var context = new AgmDataContext()) { var resStatus = context.JobApplicantStatuses.Select(s => new { id = s.Id, name = s.Name, type = "status" }).ToList(); var resStatusReason = context.JobApplicantStatusReasons.Select(s => new { id = s.Id, name = s.Name, type = "statusReason" }).ToList(); return(new ApiResponse(true) { Data = resStatus.Union(resStatusReason).OrderBy(s => s.name) }); } }
public ApiResponse GetMessages() { var userId = this.GetCurrentUser().Id; using (var context = new AgmDataContext()) { var users = context.Users.ToList(); var res = context.MessageReceivers.Where(r => r.ToUserId == userId && !r.IsDeleted).Include("Message").OrderByDescending(r => r.Message.InsertDate).ToList(); res.ForEach(i => i.Message.Sender = users.Find(u => u.Id == i.Message.FromUserId).Name); return(new ApiResponse(true) { Data = res }); } }
public ApiResponse SetMessage([FromBody] MessageIn msgIn) { this.CheckCurrentUserPermission((x) => x.CanSendMessage || x.IsAdmin); var userId = this.GetCurrentUser().Id; using (var context = new AgmDataContext()) { var msgToAdd = new Message() { InsertDate = DateTime.Now, Subject = msgIn.Subject, Text = msgIn.Text, FromUserId = userId }; var msg = context.Messages.Add(msgToAdd); var messageReceivers = new List <MessageReceiver>(); if (msgIn.SendToAll == 1) { context.Users.Where(u => !u._isDeleted && u.Id != userId).ToList().ForEach((u) => messageReceivers.Add(new MessageReceiver() { MessageId = msgToAdd.Id, ToUserId = u.Id })); } else { msgIn.ToUserIds.ToList().ForEach(u => messageReceivers.Add(new MessageReceiver() { MessageId = msgToAdd.Id, ToUserId = u })); } context.MessageReceivers.AddRange(messageReceivers); var res = context.SaveChanges(); if (res > 0) { return new ApiResponse(true) { Data = msg } } ; return(new ApiResponse(false)); } }
public ApiResponse Login(dynamic loginData) { string email = loginData.Email; string password = loginData.Password; string name = string.Empty; using (var context = new AgmDataContext()) { if (context.Users.All(u => u.Email.ToLower() != email.ToLower() || u.Password != password || u._sectionMonthlyReportsVisible != 1 || u._isDeleted || u._isActive != 1)) { return new ApiResponse(false) { Errors = new ApiResponseError[] { new ApiResponseError() { Message = "Email o password errati" } } } } ; name = context.Users.First(u => u.Email.ToLower() == email.ToLower() && u.Password == password && !u._isDeleted).Name; } var tokenHandler = new JwtSecurityTokenHandler(); var claims = new List <Claim>() { new Claim(ClaimTypes.Name, string.Format("{0}${1}", loginData.Email.ToString(), name)) }; var tokenDescriptor = new Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor() { Subject = new ClaimsIdentity(claims), Issuer = "Agm" }; var jwtToken = tokenHandler.CreateToken(tokenDescriptor); return(new ApiResponse() { Succeed = true, Token = tokenHandler.WriteToken(jwtToken) }); }
public ApiResponse Get() { this.CheckCurrentUserPermission(((x) => x.SectionJobAdsVisible)); using (var context = new AgmDataContext()) { var res = context.JobAds.ToList().OrderByDescending(j => j.DateFrom).ToList(); res.Add(new JobAd() { DateFrom = DateTime.Today, DateTo = DateTime.Today }); return(new ApiResponse(true) { Data = res }); } }