Exemple #1
0
        public HttpResponseMessage CreateEntryHeader([FromBody] dtoEntryHeader entryHeader)
        {
            // TODO: Handle creation of new task.
            // TODO: Validation if task already exist for the selected week.

            entryHeader.Task_Id = _entryService.GetTask(entryHeader.Task.Name, _userId).Id;
            entryHeader.Task    = null;
            entryHeader.User_Id = _userId;
            //

            var output = _entryService.CreateEntryHeader(entryHeader);

            if (string.IsNullOrEmpty(output))
            {
                var response = Request.CreateResponse(HttpStatusCode.Created);
                return(response);
            }
            else
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(output)
                });
            }
        }
Exemple #2
0
        private bool HeaderAlreadyExist(dtoEntryHeader entryHeader)
        {
            var result = unitOfWork.GetEntryRepository()
                         .Get(e =>
                              e.WeekStartDate == entryHeader.WeekStartDate &&
                              e.Task_Id == entryHeader.Task_Id &&
                              e.User_Id == entryHeader.User_Id)
                         .FirstOrDefault();

            if (result == null)
            {
                return(false);
            }

            return(true);
        }
Exemple #3
0
        public string CreateEntryHeader(dtoEntryHeader entryHeader)
        {
            string output = "";

            try
            {
                if (!HeaderAlreadyExist(entryHeader))
                {
                    var newEntryHeader = Mapper.Map <dtoEntryHeader, EntryHeader>(entryHeader);

                    unitOfWork.GetEntryRepository().Insert(newEntryHeader);
                    unitOfWork.Save();
                }
                else
                {
                    output = "The selected task already exists in for the selected date/week.";
                }
            }
            catch (Exception exc)
            {
                output = exc.Message;
            }
            return(output);
        }
Exemple #4
0
        public IList <dtoEntryHeader> GetEntries(DateTime startDate, DateTime endDate, int userId)
        {
            var entries = unitOfWork.GetEntryRepository()
                          .Get(e => e.WeekStartDate >= startDate &&
                               e.WeekStartDate <= endDate &&
                               e.User_Id == userId
                               ).ToList();

            List <dtoEntryHeader> result = Mapper.Map <List <EntryHeader>, List <dtoEntryHeader> >(entries);
            DateTime tempDate;

            // fill dates with blank entries
            foreach (dtoEntryHeader header in result)
            {
                List <dtoEntry> blankEntries = new List <dtoEntry>();
                tempDate = startDate;
                while (tempDate <= endDate)
                {
                    var entry = header.Entries.SingleOrDefault(e => e.EntryDate == tempDate);
                    if (entry == null)
                    {
                        blankEntries.Add(new dtoEntry()
                        {
                            EntryDate = tempDate,
                        });
                    }
                    tempDate = tempDate.AddDays(1);
                }

                foreach (var blankEntry in blankEntries)
                {
                    header.Entries.Add(blankEntry);
                }
                header.Entries = header.Entries.OrderBy(e => e.EntryDate).ToList();
                // calculate total line hours
                header.TotalHours = header.Entries.Sum(e => e.Hours);
            }

            // create total hours row
            dtoEntryHeader totalHeader = new dtoEntryHeader()
            {
                IsTotal = true,
                Entries = new Collection <dtoEntry>()
            };

            Decimal grandTotal = 0;

            tempDate = startDate;
            while (tempDate <= endDate)
            {
                List <decimal> listTempTotals = new List <decimal>();
                result.ForEach(p => listTempTotals.Add(p.Entries.Where(e => e.EntryDate == tempDate).Sum(s => s.Hours)));
                tempDate = tempDate.AddDays(1);

                var totalEntry = new dtoEntry
                {
                    EntryDate = tempDate,
                    Hours     = listTempTotals.Sum()
                };
                totalHeader.Entries.Add(totalEntry);
                grandTotal += totalEntry.Hours;
            }
            totalHeader.Entries.Add(new dtoEntry()
            {
                Hours = grandTotal
            });
            result.Add(totalHeader);

            return(result);
        }