public async Task <ApiResponse> FilterScheduleList(FilterSchedulerModel model) { ApiResponse response = new ApiResponse(); try { var activityList = await _dbContext.ScheduleDetails .Include(p => p.ProjectDetail) .Include(e => e.PolicyDetails) .Include(o => o.JobDetails) .Where(v => v.IsDeleted == false && v.IsActive == true && v.StartDate >= model.StartDate && v.ChannelId == model.ChannelId && v.MediumId == model.MediumId && (v.JobDetails.JobId == v.JobId || v.ProjectDetail.ProjectId == v.ProjectId || v.PolicyDetails.PolicyId == v.PolicyId)) .ToListAsync(); var ScheduleList = activityList.Select(b => new SchedulerModel { PolicyId = b.PolicyId, Name = b.PolicyDetails != null ? b.PolicyDetails.PolicyName : b.ProjectDetail != null ? b.ProjectDetail.ProjectName : b.JobDetails != null ? b.JobDetails.JobName : null, StartTime = b.StartTime.ToString(@"hh\:mm"), EndTime = b.EndTime.ToString(@"hh\:mm"), StartDate = b.StartDate, EndDate = b.EndDate, ProjectId = b.ProjectId, JobId = b.JobId, ChannelId = b.ChannelId, MediumId = b.MediumId, ScheduleType = b.ScheduleType, ScheduleId = b.ScheduleId, Monday = b.Monday, Tuesday = b.Tuesday, Wednesday = b.Wednesday, Thursday = b.Thursday, Friday = b.Friday, Saturday = b.Saturday, Sunday = b.Sunday }).ToList(); response.data.SchedulerList = ScheduleList; response.StatusCode = 200; response.Message = "Success"; } catch (Exception ex) { response.StatusCode = StaticResource.failStatusCode; response.Message = StaticResource.SomethingWrong + ex.Message; } return(response); }
public async Task <ApiResponse> SaveSchedule(AddEditScheduleCommand model, string userId) { long LatestScheduleId = 0; var scheduleCode = string.Empty; ApiResponse response = new ApiResponse(); var scheduleDetail = _dbContext.ScheduleDetails.OrderByDescending(x => x.ScheduleId) .FirstOrDefault(); if (scheduleDetail == null) { LatestScheduleId = 1; scheduleCode = LatestScheduleId.ToString().getScheduleCode(); } else { LatestScheduleId = Convert.ToInt32(scheduleDetail.ScheduleId) + 1; scheduleCode = LatestScheduleId.ToString().getScheduleCode(); } ScheduleDetails obj = _mapper.Map <AddEditScheduleCommand, ScheduleDetails>(model); obj.CreatedById = userId; if (model.ProjectId != null) { obj.ProjectId = model.ProjectId ?? null; obj.ScheduleType = "Project"; } if (model.PolicyId != null) { obj.PolicyId = model.PolicyId ?? null; obj.ScheduleType = "Policy"; } if (model.JobId != null) { obj.JobId = model.JobId ?? null; obj.ScheduleType = "Job"; } bool status = false; if (obj.JobId != null) { var jobDetails = _dbContext.JobDetails.AsQueryable().Where(x => x.JobId == obj.JobId && x.IsDeleted == false).FirstOrDefault(); if (jobDetails.EndDate.Date <= DateTime.UtcNow.Date) { status = true; } } if (status == true) { response.Message = "End Date for job has already reached. No new schedule can be added"; response.StatusCode = StaticResource.failStatusCode; } else { obj.StartTime = TimeSpan.Parse(model.StartTime); obj.EndTime = TimeSpan.Parse(model.EndTime); obj.ScheduleName = model.ScheduleName; obj.CreatedDate = DateTime.Now; obj.IsDeleted = false; obj.ScheduleCode = scheduleCode; obj.MediumId = model.MediumId; obj.ChannelId = model.ChannelId; obj.IsActive = true; obj.Description = model.Description; if (model.RepeatDays != null && model.RepeatDays.Count > 0) { foreach (var items in model.RepeatDays) { switch (items.Value) { case "MON": obj.Monday = items.status; break; case "TUE": obj.Tuesday = items.status; break; case "WED": obj.Wednesday = items.status; break; case "THU": obj.Thursday = items.status; break; case "FRI": obj.Friday = items.status; break; case "SAT": obj.Saturday = items.status; break; case "SUN": obj.Sunday = items.status; break; } } } await _dbContext.ScheduleDetails.AddAsync(obj); await _dbContext.SaveChangesAsync(); FilterSchedulerModel data = new FilterSchedulerModel(); data.ChannelId = obj.ChannelId; data.MediumId = obj.MediumId; data.StartDate = obj.StartDate; ApiResponse responseData = await FilterScheduleList(data); response.data.SchedulerList = responseData.data.SchedulerList; response.data.scheduleDetails = obj; response.StatusCode = StaticResource.successStatusCode; } return(response); }