示例#1
0
        public static ConstructionSiteCalculation ConvertToConstructionSiteCalculation(this ConstructionSiteCalculationViewModel constructionSiteCalculationViewModel)
        {
            ConstructionSiteCalculation constructionSiteCalculation = new ConstructionSiteCalculation()
            {
                Id         = constructionSiteCalculationViewModel.Id,
                Identifier = constructionSiteCalculationViewModel.Identifier,

                ConstructionSiteId = constructionSiteCalculationViewModel.ConstructionSite?.Id ?? null,

                StatusDate     = constructionSiteCalculationViewModel.StatusDate,
                NumOfEmployees = constructionSiteCalculationViewModel.NumOfEmployees,
                EmployeePrice  = constructionSiteCalculationViewModel.EmployeePrice,
                NumOfMonths    = constructionSiteCalculationViewModel.NumOfMonths,

                OldValue        = constructionSiteCalculationViewModel.OldValue,
                NewValue        = constructionSiteCalculationViewModel.NewValue,
                ValueDifference = constructionSiteCalculationViewModel.ValueDifference,

                PlusMinus     = constructionSiteCalculationViewModel.PlusMinus,
                ItemStatus    = constructionSiteCalculationViewModel.ItemStatus,
                IsPaid        = constructionSiteCalculationViewModel.IsPaid,
                IsRefunded    = constructionSiteCalculationViewModel.IsRefunded,
                DateCondition = constructionSiteCalculationViewModel.DateCondition,
                CreatedById   = constructionSiteCalculationViewModel.CreatedBy?.Id ?? null,
                CompanyId     = constructionSiteCalculationViewModel.Company?.Id ?? null,

                CreatedAt = constructionSiteCalculationViewModel.CreatedAt,
                UpdatedAt = constructionSiteCalculationViewModel.UpdatedAt
            };

            return(constructionSiteCalculation);
        }
示例#2
0
        public ConstructionSiteCalculation GetLastConstructionSiteCalculation(int companyId, int constructionSiteId)
        {
            ConstructionSiteCalculation constructionSite = context.ConstructionSiteCalculations
                                                           .Where(x => x.Company.Id == companyId && x.ConstructionSiteId == constructionSiteId)
                                                           .OrderByDescending(x => x.Id)
                                                           .FirstOrDefault();

            Console.WriteLine("NOVO");

            return(constructionSite);
        }
示例#3
0
        public ConstructionSiteCalculation Delete(Guid identifier)
        {
            ConstructionSiteCalculation dbEntry = context.ConstructionSiteCalculations
                                                  .FirstOrDefault(x => x.Identifier == identifier && x.Active == true);

            if (dbEntry != null)
            {
                dbEntry.Active    = false;
                dbEntry.UpdatedAt = DateTime.Now;
            }
            return(dbEntry);
        }
示例#4
0
        public ConstructionSiteCalculationResponse Create(ConstructionSiteCalculationViewModel constructionSiteCalculationViewModel)
        {
            ConstructionSiteCalculationResponse response = new ConstructionSiteCalculationResponse();

            try
            {
                ConstructionSiteCalculation lastConstructionSiteCalculation = unitOfWork.GetConstructionSiteCalculationRepository()
                                                                              .GetLastConstructionSiteCalculation(constructionSiteCalculationViewModel.Company.Id, constructionSiteCalculationViewModel.ConstructionSite.Id);

                if (constructionSiteCalculationViewModel.PlusMinus == "+")
                {
                    decimal enteredValue = constructionSiteCalculationViewModel.NumOfEmployees * constructionSiteCalculationViewModel.NumOfMonths * constructionSiteCalculationViewModel.EmployeePrice;

                    constructionSiteCalculationViewModel.ValueDifference = (lastConstructionSiteCalculation?.ValueDifference ?? 0) - enteredValue;
                    if (constructionSiteCalculationViewModel.ValueDifference < 0)
                    {
                        constructionSiteCalculationViewModel.ValueDifference = 0;
                    }
                    decimal valueToAdd = enteredValue - (lastConstructionSiteCalculation?.ValueDifference ?? 0);
                    if (valueToAdd < 0)
                    {
                        valueToAdd = 0;
                    }
                    constructionSiteCalculationViewModel.NewValue = (lastConstructionSiteCalculation?.NewValue ?? 0) + valueToAdd;
                }
                else
                {
                    decimal enteredValue = constructionSiteCalculationViewModel.NumOfEmployees * constructionSiteCalculationViewModel.NumOfMonths * constructionSiteCalculationViewModel.EmployeePrice;

                    constructionSiteCalculationViewModel.ValueDifference = (lastConstructionSiteCalculation?.ValueDifference ?? 0) + enteredValue;
                    constructionSiteCalculationViewModel.NewValue        = lastConstructionSiteCalculation?.NewValue ?? 0;
                }

                constructionSiteCalculationViewModel.UpdatedAt = DateTime.Now.AddMilliseconds(1);

                ConstructionSiteCalculation addedConstructionSiteCalculation = unitOfWork.GetConstructionSiteCalculationRepository()
                                                                               .Create(constructionSiteCalculationViewModel.ConvertToConstructionSiteCalculation());
                unitOfWork.Save();
                response.ConstructionSiteCalculation = addedConstructionSiteCalculation.ConvertToConstructionSiteCalculationViewModel();
                response.Success = true;
            }
            catch (Exception ex)
            {
                response.ConstructionSiteCalculation = new ConstructionSiteCalculationViewModel();
                response.Success = false;
                response.Message = ex.Message;
            }
            return(response);
        }
        public ConstructionSiteCalculation Delete(Guid identifier)
        {
            ConstructionSiteCalculation dbEntry = context.ConstructionSiteCalculations
                                                  .Union(context.ChangeTracker.Entries()
                                                         .Where(x => x.State == EntityState.Added && x.Entity.GetType() == typeof(ConstructionSiteCalculation))
                                                         .Select(x => x.Entity as ConstructionSiteCalculation))
                                                  .FirstOrDefault(x => x.Identifier == identifier && x.Active == true);

            if (dbEntry != null)
            {
                dbEntry.Active    = false;
                dbEntry.UpdatedAt = DateTime.Now;
            }
            return(dbEntry);
        }
        public ConstructionSiteCalculation Create(ConstructionSiteCalculation constructionSiteCalculation)
        {
            if (context.ConstructionSiteCalculations.Where(x => x.Identifier != null && x.Identifier == constructionSiteCalculation.Identifier).Count() == 0)
            {
                constructionSiteCalculation.Id = 0;

                constructionSiteCalculation.Active    = true;
                constructionSiteCalculation.UpdatedAt = DateTime.Now;
                constructionSiteCalculation.CreatedAt = DateTime.Now;

                context.ConstructionSiteCalculations.Add(constructionSiteCalculation);
                return(constructionSiteCalculation);
            }
            else
            {
                // Load item that will be updated
                ConstructionSiteCalculation dbEntry = context.ConstructionSiteCalculations
                                                      .FirstOrDefault(x => x.Identifier == constructionSiteCalculation.Identifier && x.Active == true);

                if (dbEntry != null)
                {
                    dbEntry.CompanyId   = constructionSiteCalculation.CompanyId ?? null;
                    dbEntry.CreatedById = constructionSiteCalculation.CreatedById ?? null;

                    // Set properties
                    dbEntry.NumOfEmployees  = constructionSiteCalculation.NumOfEmployees;
                    dbEntry.EmployeePrice   = constructionSiteCalculation.EmployeePrice;
                    dbEntry.NumOfMonths     = constructionSiteCalculation.NumOfMonths;
                    dbEntry.OldValue        = constructionSiteCalculation.OldValue;
                    dbEntry.NewValue        = constructionSiteCalculation.NewValue;
                    dbEntry.ValueDifference = constructionSiteCalculation.ValueDifference;
                    dbEntry.PlusMinus       = constructionSiteCalculation.PlusMinus;
                    dbEntry.ItemStatus      = constructionSiteCalculation.ItemStatus;
                    dbEntry.DateCondition   = constructionSiteCalculation.DateCondition;

                    // Set timestamp
                    dbEntry.UpdatedAt = DateTime.Now;
                }

                return(dbEntry);
            }
        }
        public ConstructionSiteCalculation GetLastConstructionSiteCalculation(int companyId, int constructionSiteId)
        {
            ConstructionSiteCalculation constructionSiteCalculation = new ConstructionSiteCalculation();

            string queryString =
                "SELECT TOP 1 ConstructionSiteCalculationId, ConstructionSiteCalculationIdentifier, " +
                "ConstructionSiteId, ConstructionSiteIdentifier, ConstructionSiteCode, ConstructionSiteName, " +
                "NumOfEmployees, EmployeePrice, NumOfMonths, OldValue, NewValue, ValueDifference, PlusMinus, ItemStatus, " +
                "IsPaid, IsRefunded, DateCondition, " +
                "Active, UpdatedAt, CreatedById, CreatedByFirstName, CreatedByLastName, CompanyId, CompanyName " +
                "FROM vConstructionSiteCalculations " +
                "WHERE CompanyId = @CompanyId AND ConstructionSiteId = @ConstructionSiteId " +
                "ORDER BY ConstructionSiteCalculationId DESC;";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = connection.CreateCommand();
                command.CommandText = queryString;
                command.Parameters.Add(new SqlParameter("@CompanyId", companyId));
                command.Parameters.Add(new SqlParameter("@ConstructionSiteId", constructionSiteId));

                connection.Open();
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        constructionSiteCalculation            = new ConstructionSiteCalculation();
                        constructionSiteCalculation.Id         = Int32.Parse(reader["ConstructionSiteCalculationId"].ToString());
                        constructionSiteCalculation.Identifier = Guid.Parse(reader["ConstructionSiteCalculationIdentifier"].ToString());

                        if (reader["ConstructionSiteId"] != DBNull.Value)
                        {
                            constructionSiteCalculation.ConstructionSite            = new ConstructionSite();
                            constructionSiteCalculation.ConstructionSiteId          = Int32.Parse(reader["ConstructionSiteId"].ToString());
                            constructionSiteCalculation.ConstructionSite.Id         = Int32.Parse(reader["ConstructionSiteId"].ToString());
                            constructionSiteCalculation.ConstructionSite.Identifier = Guid.Parse(reader["ConstructionSiteIdentifier"].ToString());
                            constructionSiteCalculation.ConstructionSite.Code       = reader["ConstructionSiteCode"].ToString();
                            constructionSiteCalculation.ConstructionSite.Name       = reader["ConstructionSiteName"].ToString();
                        }

                        if (reader["NumOfEmployees"] != DBNull.Value)
                        {
                            constructionSiteCalculation.NumOfEmployees = Int32.Parse(reader["NumOfEmployees"].ToString());
                        }
                        if (reader["EmployeePrice"] != DBNull.Value)
                        {
                            constructionSiteCalculation.EmployeePrice = decimal.Parse(reader["EmployeePrice"].ToString());
                        }
                        if (reader["NumOfMonths"] != DBNull.Value)
                        {
                            constructionSiteCalculation.NumOfMonths = Int32.Parse(reader["NumOfMonths"].ToString());
                        }
                        if (reader["OldValue"] != DBNull.Value)
                        {
                            constructionSiteCalculation.OldValue = decimal.Parse(reader["OldValue"].ToString());
                        }
                        if (reader["NewValue"] != DBNull.Value)
                        {
                            constructionSiteCalculation.NewValue = decimal.Parse(reader["NewValue"].ToString());
                        }
                        if (reader["ValueDifference"] != DBNull.Value)
                        {
                            constructionSiteCalculation.ValueDifference = decimal.Parse(reader["ValueDifference"].ToString());
                        }
                        if (reader["PlusMinus"] != DBNull.Value)
                        {
                            constructionSiteCalculation.PlusMinus = reader["PlusMinus"].ToString();
                        }
                        if (reader["ItemStatus"] != DBNull.Value)
                        {
                            constructionSiteCalculation.ItemStatus = Int32.Parse(reader["ItemStatus"].ToString());
                        }

                        constructionSiteCalculation.IsPaid     = bool.Parse(reader["IsPaid"].ToString());
                        constructionSiteCalculation.IsRefunded = bool.Parse(reader["IsRefunded"].ToString());

                        if (reader["DateCondition"] != DBNull.Value)
                        {
                            constructionSiteCalculation.DateCondition = DateTime.Parse(reader["DateCondition"].ToString());
                        }

                        constructionSiteCalculation.Active    = bool.Parse(reader["Active"].ToString());
                        constructionSiteCalculation.UpdatedAt = DateTime.Parse(reader["UpdatedAt"].ToString());

                        if (reader["CreatedById"] != DBNull.Value)
                        {
                            constructionSiteCalculation.CreatedBy           = new User();
                            constructionSiteCalculation.CreatedById         = Int32.Parse(reader["CreatedById"].ToString());
                            constructionSiteCalculation.CreatedBy.Id        = Int32.Parse(reader["CreatedById"].ToString());
                            constructionSiteCalculation.CreatedBy.FirstName = reader["CreatedByFirstName"]?.ToString();
                            constructionSiteCalculation.CreatedBy.LastName  = reader["CreatedByLastName"]?.ToString();
                        }

                        if (reader["CompanyId"] != DBNull.Value)
                        {
                            constructionSiteCalculation.Company      = new Company();
                            constructionSiteCalculation.CompanyId    = Int32.Parse(reader["CompanyId"].ToString());
                            constructionSiteCalculation.Company.Id   = Int32.Parse(reader["CompanyId"].ToString());
                            constructionSiteCalculation.Company.Name = reader["CompanyName"].ToString();
                        }
                    }
                }
            }

            Console.WriteLine("NOVO");

            return(constructionSiteCalculation);

            //ConstructionSiteCalculation constructionSite = context.ConstructionSiteCalculations
            //    .Where(x => x.Company.Id == companyId && x.ConstructionSiteId == constructionSiteId)
            //    .OrderByDescending(x => x.Id)
            //    .FirstOrDefault();

            //Console.WriteLine("NOVO");

            //return constructionSite;
        }
        public List <ConstructionSiteCalculation> GetConstructionSiteCalculationsNewerThen(int companyId, DateTime lastUpdateTime)
        {
            List <ConstructionSiteCalculation> ConstructionSiteCalculations = new List <ConstructionSiteCalculation>();

            string queryString =
                "SELECT ConstructionSiteCalculationId, ConstructionSiteCalculationIdentifier, " +
                "ConstructionSiteId, ConstructionSiteIdentifier, ConstructionSiteCode, ConstructionSiteName, " +
                "StatusDate, NumOfEmployees, EmployeePrice, NumOfMonths, OldValue, NewValue, ValueDifference, PlusMinus, ItemStatus, " +
                "IsPaid, IsRefunded, DateCondition, " +
                "Active, UpdatedAt, CreatedById, CreatedByFirstName, CreatedByLastName, CompanyId, CompanyName " +
                "FROM vConstructionSiteCalculations " +
                "WHERE CompanyId = @CompanyId " +
                "AND CONVERT(DATETIME, CONVERT(VARCHAR(20), UpdatedAt, 120)) > CONVERT(DATETIME, CONVERT(VARCHAR(20), @LastUpdateTime, 120));";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = connection.CreateCommand();
                command.CommandText = queryString;
                command.Parameters.Add(new SqlParameter("@CompanyId", companyId));
                command.Parameters.Add(new SqlParameter("@LastUpdateTime", lastUpdateTime));

                connection.Open();
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    ConstructionSiteCalculation constructionSiteCalculation;
                    while (reader.Read())
                    {
                        constructionSiteCalculation            = new ConstructionSiteCalculation();
                        constructionSiteCalculation.Id         = Int32.Parse(reader["ConstructionSiteCalculationId"].ToString());
                        constructionSiteCalculation.Identifier = Guid.Parse(reader["ConstructionSiteCalculationIdentifier"].ToString());

                        if (reader["ConstructionSiteId"] != DBNull.Value)
                        {
                            constructionSiteCalculation.ConstructionSite            = new ConstructionSite();
                            constructionSiteCalculation.ConstructionSiteId          = Int32.Parse(reader["ConstructionSiteId"].ToString());
                            constructionSiteCalculation.ConstructionSite.Id         = Int32.Parse(reader["ConstructionSiteId"].ToString());
                            constructionSiteCalculation.ConstructionSite.Identifier = Guid.Parse(reader["ConstructionSiteIdentifier"].ToString());
                            constructionSiteCalculation.ConstructionSite.Code       = reader["ConstructionSiteCode"].ToString();
                            constructionSiteCalculation.ConstructionSite.Name       = reader["ConstructionSiteName"].ToString();
                        }

                        if (reader["StatusDate"] != DBNull.Value)
                        {
                            constructionSiteCalculation.StatusDate = DateTime.Parse(reader["StatusDate"].ToString());
                        }
                        if (reader["NumOfEmployees"] != DBNull.Value)
                        {
                            constructionSiteCalculation.NumOfEmployees = Int32.Parse(reader["NumOfEmployees"].ToString());
                        }
                        if (reader["EmployeePrice"] != DBNull.Value)
                        {
                            constructionSiteCalculation.EmployeePrice = decimal.Parse(reader["EmployeePrice"].ToString());
                        }
                        if (reader["NumOfMonths"] != DBNull.Value)
                        {
                            constructionSiteCalculation.NumOfMonths = Int32.Parse(reader["NumOfMonths"].ToString());
                        }
                        if (reader["OldValue"] != DBNull.Value)
                        {
                            constructionSiteCalculation.OldValue = decimal.Parse(reader["OldValue"].ToString());
                        }
                        if (reader["NewValue"] != DBNull.Value)
                        {
                            constructionSiteCalculation.NewValue = decimal.Parse(reader["NewValue"].ToString());
                        }
                        if (reader["ValueDifference"] != DBNull.Value)
                        {
                            constructionSiteCalculation.ValueDifference = decimal.Parse(reader["ValueDifference"].ToString());
                        }
                        if (reader["PlusMinus"] != DBNull.Value)
                        {
                            constructionSiteCalculation.PlusMinus = reader["PlusMinus"].ToString();
                        }
                        if (reader["ItemStatus"] != DBNull.Value)
                        {
                            constructionSiteCalculation.ItemStatus = Int32.Parse(reader["ItemStatus"].ToString());
                        }

                        constructionSiteCalculation.IsPaid     = bool.Parse(reader["IsPaid"].ToString());
                        constructionSiteCalculation.IsRefunded = bool.Parse(reader["IsRefunded"].ToString());

                        if (reader["DateCondition"] != DBNull.Value)
                        {
                            constructionSiteCalculation.DateCondition = DateTime.Parse(reader["DateCondition"].ToString());
                        }

                        constructionSiteCalculation.Active    = bool.Parse(reader["Active"].ToString());
                        constructionSiteCalculation.UpdatedAt = DateTime.Parse(reader["UpdatedAt"].ToString());

                        if (reader["CreatedById"] != DBNull.Value)
                        {
                            constructionSiteCalculation.CreatedBy           = new User();
                            constructionSiteCalculation.CreatedById         = Int32.Parse(reader["CreatedById"].ToString());
                            constructionSiteCalculation.CreatedBy.Id        = Int32.Parse(reader["CreatedById"].ToString());
                            constructionSiteCalculation.CreatedBy.FirstName = reader["CreatedByFirstName"]?.ToString();
                            constructionSiteCalculation.CreatedBy.LastName  = reader["CreatedByLastName"]?.ToString();
                        }

                        if (reader["CompanyId"] != DBNull.Value)
                        {
                            constructionSiteCalculation.Company      = new Company();
                            constructionSiteCalculation.CompanyId    = Int32.Parse(reader["CompanyId"].ToString());
                            constructionSiteCalculation.Company.Id   = Int32.Parse(reader["CompanyId"].ToString());
                            constructionSiteCalculation.Company.Name = reader["CompanyName"].ToString();
                        }

                        ConstructionSiteCalculations.Add(constructionSiteCalculation);
                    }
                }
            }
            return(ConstructionSiteCalculations);

            //List<ConstructionSiteCalculation> ConstructionSites = context.ConstructionSiteCalculations
            //    .Include(x => x.ConstructionSite)
            //    .Include(x => x.Company)
            //    .Include(x => x.CreatedBy)
            //    .Where(x => x.Company.Id == companyId && x.UpdatedAt > lastUpdateTime)
            //    .AsNoTracking()
            //    .ToList();

            //return ConstructionSites;
        }
示例#9
0
        public static ConstructionSiteCalculationViewModel ConvertToConstructionSiteCalculationViewModelLite(this ConstructionSiteCalculation constructionSiteCalculation)
        {
            ConstructionSiteCalculationViewModel constructionSiteCalculationViewModel = new ConstructionSiteCalculationViewModel()
            {
                Id         = constructionSiteCalculation.Id,
                Identifier = constructionSiteCalculation.Identifier,

                StatusDate     = constructionSiteCalculation.StatusDate,
                NumOfEmployees = constructionSiteCalculation.NumOfEmployees,
                EmployeePrice  = constructionSiteCalculation.EmployeePrice,
                NumOfMonths    = constructionSiteCalculation.NumOfMonths,

                OldValue        = constructionSiteCalculation.OldValue,
                NewValue        = constructionSiteCalculation.NewValue,
                ValueDifference = constructionSiteCalculation.ValueDifference,

                PlusMinus     = constructionSiteCalculation.PlusMinus,
                ItemStatus    = constructionSiteCalculation.ItemStatus,
                IsPaid        = constructionSiteCalculation.IsPaid,
                IsRefunded    = constructionSiteCalculation.IsRefunded,
                DateCondition = constructionSiteCalculation.DateCondition,
                IsActive      = constructionSiteCalculation.Active,

                UpdatedAt = constructionSiteCalculation.UpdatedAt,
                CreatedAt = constructionSiteCalculation.CreatedAt
            };

            return(constructionSiteCalculationViewModel);
        }