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) }); } }
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); }
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); }
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); }