예제 #1
0
        public async Task <IActionResult> EditNote(string calendarId, int month, int day, string note)
        {
            if (!await HasAuthorityAsync(calendarId, CalendarSharingOption.Collaborate))
            {
                return(StatusCode(403, new ErrorResponseModel("편집할 권한이 없습니다")));
            }

            var log = await _database.DayLogs.FindAsync(calendarId, month, day);

            if (log == null)
            {
                log = new DayLog {
                    CalendarId = calendarId, Month = month, Day = day
                };
                _database.DayLogs.Add(log);
            }

            log.Note = note;

            if (String.IsNullOrWhiteSpace(log.Note) && log.Option == null)
            {
                _database.DayLogs.Remove(log);
            }

            await _database.SaveChangesAsync();

            return(Ok(new { }));
        }
        public async Task <ActionResult <DayLog> > PostDayLog(DayLog dayLog)
        {
            _context.DayLog.Add(dayLog);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetDayLog", new { id = dayLog.Id }, dayLog));
        }
예제 #3
0
        /// <summary>
        /// 根据ID获取日志信息表实体
        /// </summary>
        /// <param name="guid">主键ID</param>
        /// <returns>返回日志信息表实体</returns>
        public DayLog GetItemById(Guid guid)
        {
            DayLog tem = new DayLog();

            tem = Dal.Find <DayLog>(DayLog._.ID == guid);
            return(tem);
        }
        public async Task <IActionResult> PutDayLog(int id, DayLog dayLog)
        {
            if (id != dayLog.Id)
            {
                return(BadRequest());
            }

            _context.Entry(dayLog).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!DayLogExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
예제 #5
0
        private SummaryGridRow GetGridValue(DayLog dayLog)
        {
            TimeSpan time     = new TimeSpan();
            string   duration = "";
            string   comment  = "";

            if (dayLog.Title.Length >= 8 && TimeSpan.TryParse(dayLog.Title.Substring(0, 8), out time))
            {
                duration = time.ToString();
                if (dayLog.Title.Length > 8)
                {
                    comment = dayLog.Title.Substring(8, dayLog.Title.Length - 8);
                }
                if (comment.Trim().Length == 0)
                {
                    if (dayLog.Class.Contains("dxeCalendarWeekend_DevEx"))
                    {
                        comment = "Weekend";
                    }
                }
            }
            else
            {
                comment = dayLog.Title;
            }
            comment = comment.Replace(":", "").Trim();
            //var color = GetValueFromStyle(dayLog.Style, "BACKGROUND-COLOR");
            return(new SummaryGridRow {
                WeekDay = dayLog.WeekDay, Day = dayLog.Day, Duration = duration, Comments = comment, Color = dayLog.Color
            });
        }
예제 #6
0
        public static IEnumerable <DayLog> GetWeek(DateTime start, DateTime end)
        {
            CarPoolToolEntities entities = new CarPoolToolEntities();

            var log = from a in entities.CarpoolLogs
                      where a.data >= start && a.data < end
                      orderby a.data
                      select a;

            Dictionary <DateTime, DayLog> week = new Dictionary <DateTime, DayLog>();

            foreach (var item in log.ToList())
            {
                if (!week.ContainsKey(item.data.Date))
                {
                    week[item.data.Date] = new DayLog(item.data.Date);
                }
                week[item.data.Date].InsertLog(item);
            }

            //Fill missing users and/or days
            var      users  = entities.Users;
            DateTime curDay = start;

            while (curDay < end)
            {
                if (!week.ContainsKey(curDay))
                {
                    week[curDay] = new DayLog(curDay);
                }
                week[curDay].FillMissingUsers(users, UserStatus.MissingData, false);
                curDay = curDay.AddDays(1);
            }


            //Load alerts and holidays
            foreach (var daylog in week.Values)
            {
                var alerts = from a in entities.Alerts
                             where a.data == daylog.Date
                             select a;

                var holiday = (from h in entities.Holidays
                               where h.data == daylog.Date
                               select h).FirstOrDefault();

                daylog.Alerts = alerts.ToList();
                if (holiday != null)
                {
                    daylog.Holiday = holiday;
                }
            }


            return(week.Values.OrderBy(x => x.Date));
        }
예제 #7
0
        /// <summary>
        /// 更新数据
        /// </summary>
        /// <param name="item"></param>
        public async Task Update(TodoLog item)
        {
            if (item == null)
            {
                return;
            }

            using var db = await NewDb;

            var daykey = item.Created.GetDayId();
            var p      = db.DayLogs.FirstOrDefault(x => x.Date == daykey);

            if (p == null)
            {
                //创建新的日期
                var daylog = new DayLog
                {
                    Date     = daykey,
                    TodoLogs = new List <TodoLog>()
                };
                Created(daylog);
                Created(item);
                daylog.TodoLogs.Add(item);
                db.DayLogs.Add(daylog);
            }
            else
            {
                //检查记录是否存在
                var tl = p.TodoLogs.FirstOrDefault(x => x.Key == item.Key && x.ProjcectId == item.ProjcectId && x.TodoId == item.TodoId);
                if (tl == null)
                {
                    Created(item);
                    //创建新记录
                    p.TodoLogs.Add(item);
                }
                else
                {
                    //更新
                    tl.Update(item);
                }
            }

            await db.SaveChanges();

            await LoadDayLog();

            MessageAction?.Invoke(MessageTypeUpdate);
        }
예제 #8
0
 // POST: api/DayLog
 /// <summary>
 /// 添加信息
 /// </summary>
 /// <param name="value"></param>
 public object Post([FromBody] DayLog value)
 {
     try
     {
         this.dayLogService.AddOrModity(value);
         return(base.ToSuccessObject());
     }
     catch (DbEntityValidationException dbEx)
     {
         return(base.ToFailureObject(dbEx.Message));
     }
     catch (Exception ex)
     {
         return(base.ToFailureObject(ex.Message));
     }
 }
예제 #9
0
        /// <summary>
        /// 更新数据
        /// </summary>
        /// <param name="item"></param>
        public async Task Update(TodoLog item)
        {
            if (item == null)
            {
                return;
            }
            var daykey = item.Created.GetDayId();
            var p      = DayLogs.FirstOrDefault(x => x.Date == daykey);

            if (p == null)
            {
                //创建新的日期
                var daylog = new DayLog
                {
                    Date     = daykey,
                    TodoLogs = new List <TodoLog>()
                };
                Created(daylog);
                Created(item);
                daylog.TodoLogs.Add(item);
                DayLogs.Add(daylog);

                DataIndex.DayLogs.AddUniq(daylog.Key);
                await Save(daylog);
                await Save(DataIndex);
            }
            else
            {
                //检查记录是否存在
                var tl = p.TodoLogs.FirstOrDefault(x => x.Key == item.Key && x.ProjcectId == item.ProjcectId && x.TodoId == item.TodoId);
                if (tl == null)
                {
                    Created(item);
                    //创建新记录
                    p.TodoLogs.Add(item);
                }
                else
                {
                    //更新
                    tl.Update(item);
                }
                await Save(p);
            }

            MessageAction?.Invoke(MessageTypeUpdate);
        }
예제 #10
0
        public async Task <IActionResult> EditNote(string calendarId, int month, int day, string note)
        {
            var log = await _database.DayLogs.FindAsync(calendarId, month, day);

            if (log == null)
            {
                log = new DayLog {
                    CalendarId = calendarId, Month = month, Day = day
                };
                _database.DayLogs.Add(log);
            }

            log.Note = note;

            if (String.IsNullOrWhiteSpace(log.Note) && log.Option == null)
            {
                _database.DayLogs.Remove(log);
            }

            await _database.SaveChangesAsync();

            return(Ok());
        }
예제 #11
0
 /// <summary>
 /// 添加或修改
 /// </summary>
 /// <param name="model"></param>
 public void AddOrModity(DayLog model)
 {
     try
     {
         this.dayLogRepository.UnitOfWork.BeginTrans();
         if (!string.IsNullOrEmpty(model.Id))
         {
             this.dayLogRepository.Modity(model);
         }
         else
         {
             model.GenerateNewIdentity();
             model.CreateDate = DateTime.Now;
             this.dayLogRepository.Add(model);
         }
         this.dayLogRepository.SaveChanges();
         this.dayLogRepository.UnitOfWork.Commit();
     }
     catch (Exception ex)
     {
         this.dayLogRepository.UnitOfWork.Rollback();
         throw ex;
     }
 }
예제 #12
0
        public static void PersistDayLog(DayLog daylog, CarPoolToolEntities entities, UserStatus?fillStatus, bool persistChanges)
        {
            DateTime day = daylog.Date.Date;

            var users = entities.Users;

            if (fillStatus.HasValue)
            {
                daylog.FillMissingUsers(users, fillStatus.Value, true);
            }

            foreach (var user in users)
            {
                if (!daylog.Userdata.ContainsKey(user))
                {
                    continue;
                }

                var        log    = (from l in entities.CarpoolLogs where l.data == day && l.username == user.username select l).FirstOrDefault();
                UserStatus status = daylog.Userdata[user];

                //Remove entry
                if (status == UserStatus.MissingData)
                {
                    if (log != null)
                    {
                        entities.CarpoolLogs.Remove(log);
                    }
                }
                else
                {
                    if (log == null)
                    {
                        log          = new CarpoolLog();
                        log.username = user.username;
                        log.data     = day;
                        entities.CarpoolLogs.Add(log);
                    }

                    switch (status)
                    {
                    case UserStatus.Driver:
                        log.driver    = 1;
                        log.passenger = 0;
                        break;

                    case UserStatus.Passenger:
                        log.driver    = 0;
                        log.passenger = 1;
                        break;

                    case UserStatus.Absent:
                        log.driver    = 0;
                        log.passenger = 0;
                        break;

                    default:
                        break;
                    }
                }
            }

            //Update o insert
            if (persistChanges)
            {
                entities.SaveChanges();
            }
        }
예제 #13
0
        public static void PersistDayLog(DayLog daylog, UserStatus?fillStatus)
        {
            CarPoolToolEntities entities = new CarPoolToolEntities();

            PersistDayLog(daylog, entities, fillStatus, true);
        }
예제 #14
0
 public bool ExitDayLog(DayLog entity)
 {
     return(Dal.Exists <DayLog>(DayLog._.ID != entity.ID && DayLog._.UserID == entity.UserID && DayLog._.WordDate == entity.WordDate));
 }