public HttpResponseMessage Get([FromUri] Guid?id, [FromUri] Guid?projectId)
        {
            var model = db.MemberDayReports
                        .AsNoTracking()
                        .Include(x => x.Member)
                        .Include(x => x.Project)
                        .Include(x => x.Project.Members)
                        .Include(x => x.Project.Members.Select(z => z.Member))
                        .Where(x => x.Project.Members.Any(z => z.MemberId == UserId))
                        .FirstOrDefault(x => x.Id == id);

            if (model == null)
            {
                model = new MemberDayReport
                {
                    Id        = Guid.Empty,
                    DateTime  = DateTime.Now,
                    ProjectId = projectId.Value,
                    Project   = db.Projects
                                .Include(x => x.Members)
                                .FirstOrDefault(x => x.Id == projectId.Value),
                };
                model.Member   = db.ProjectMembers.Where(x => x.ProjectId == projectId & x.MemberType == ProjectMemberType.Customer).Select(z => z.Member).FirstOrDefault();
                model.MemberId = model.Member == null ? (Guid?)null : model.Member.Id;
                model.RateType = model.Project.RateType;
                model.Value    = model.Project.RateValue;
            }

            var r = model.ToDynamic();

            r.Currency = db.Currencies.FirstOrDefault(x => x.UserId == UserId & x.CurrencyType == model.Project.RateCurrencyType);
            r.Members  = db.ProjectMembers.Where(x => x.ProjectId == projectId & x.MemberType == ProjectMemberType.Customer).Select(z => z.Member).ToList();

            return(ResponseObject2Json(r));
        }
        public HttpResponseMessage Post(MemberDayReport model)
        {
            var p = db.ProjectMembers.Where(x => x.ProjectId == model.ProjectId & x.Member.MainMemberId == UserId & x.MemberType == ProjectMemberType.Implementer).Select(x => x.Project).FirstOrDefault();

            model.Id        = Guid.NewGuid();
            model.UserId    = UserId;
            model.Member    = null;
            model.Project   = null;
            model.ProjectId = p.Id;
            db.MemberDayReports.Add(model);
            db.SaveChanges();

            return(ResponseObject2Json(null));
        }
        public HttpResponseMessage Put(MemberDayReport model)
        {
            var p = db.ProjectMembers
                    .AsNoTracking()
                    .Where(x => x.ProjectId == model.ProjectId & x.Member.MainMemberId == UserId & x.MemberType == ProjectMemberType.Implementer).Select(x => x.Project)
                    .FirstOrDefault();

            if (p != null)
            {
                model.Member          = null;
                model.Project         = null;
                db.Entry(model).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
            }

            return(ResponseObject2Json(null));
        }